Clean up query generation in tag server measure report

This commit is contained in:
Matt Jankowski 2024-07-30 09:28:02 -04:00
parent c9ea91f868
commit 7f4c6bc560

View file

@ -14,11 +14,11 @@ class Admin::Metrics::Measure::TagServersMeasure < Admin::Metrics::Measure::Base
protected
def perform_total_query
tag.statuses.where('statuses.id BETWEEN ? AND ?', Mastodon::Snowflake.id_at(@start_at, with_random: false), Mastodon::Snowflake.id_at(@end_at, with_random: false)).joins(:account).count('distinct accounts.domain')
domain_tag_count id_range(@start_at, @end_at)
end
def perform_previous_total_query
tag.statuses.where('statuses.id BETWEEN ? AND ?', Mastodon::Snowflake.id_at(@start_at - length_of_period, with_random: false), Mastodon::Snowflake.id_at(@end_at - length_of_period, with_random: false)).joins(:account).count('distinct accounts.domain')
domain_tag_count id_range(@start_at, @end_at, length_of_period)
end
def sql_array
@ -60,4 +60,21 @@ class Admin::Metrics::Measure::TagServersMeasure < Admin::Metrics::Measure::Base
def params
@params.permit(:id)
end
def domain_tag_count(range)
tag
.statuses
.where(id: range)
.joins(:account)
.distinct
.count(Account.arel_table[:domain])
end
def id_range(starting, ending, offset = 0)
id_from(starting - offset)..id_from(ending - offset)
end
def id_from(time)
Mastodon::Snowflake.id_at(time, with_random: false)
end
end