23 lines
655 B
Ruby
23 lines
655 B
Ruby
|
# frozen_string_literal: true
|
||
|
|
||
|
class AnnualReport::TopHashtags < AnnualReport::Source
|
||
|
SET_SIZE = 40
|
||
|
|
||
|
def generate
|
||
|
{
|
||
|
top_hashtags: top_hashtags.map do |(name, count)|
|
||
|
{
|
||
|
name: name,
|
||
|
count: count,
|
||
|
}
|
||
|
end,
|
||
|
}
|
||
|
end
|
||
|
|
||
|
private
|
||
|
|
||
|
def top_hashtags
|
||
|
Tag.joins(:statuses).where(statuses: { id: @account.statuses.where(id: year_as_snowflake_range).reorder(nil).select(:id) }).group(:id).having('count(*) > 1').order(total: :desc).limit(SET_SIZE).pluck(Arel.sql('COALESCE(tags.display_name, tags.name), count(*) AS total'))
|
||
|
end
|
||
|
end
|