Add RankedTrend concern for trends classes (#29388)

This commit is contained in:
Matt Jankowski 2024-02-26 08:45:39 -05:00 committed by GitHub
parent 98e3dc2578
commit 8429d07454
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 37 additions and 4 deletions

View file

@ -0,0 +1,29 @@
# frozen_string_literal: true
module RankedTrend
extend ActiveSupport::Concern
included do
scope :by_rank, -> { order(rank: :desc) }
scope :ranked_below, ->(value) { where(rank: ..value) }
end
class_methods do
def recalculate_ordered_rank
connection
.exec_update(<<~SQL.squish)
UPDATE #{table_name}
SET rank = inner_ordered.calculated_rank
FROM (
SELECT id, row_number() OVER w AS calculated_rank
FROM #{table_name}
WINDOW w AS (
PARTITION BY language
ORDER BY score DESC
)
) inner_ordered
WHERE #{table_name}.id = inner_ordered.id
SQL
end
end
end