Define constants for sampling sizes in AccountReachFinder (#32805)

This commit is contained in:
Matt Jankowski 2024-11-12 03:38:08 -05:00 committed by GitHub
parent 1f85ca2b0e
commit ea6d3ca8c1
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -1,6 +1,10 @@
# frozen_string_literal: true # frozen_string_literal: true
class AccountReachFinder class AccountReachFinder
RECENT_LIMIT = 2_000
STATUS_LIMIT = 200
STATUS_SINCE = 2.days
def initialize(account) def initialize(account)
@account = account @account = account
end end
@ -20,13 +24,27 @@ class AccountReachFinder
end end
def recently_mentioned_inboxes def recently_mentioned_inboxes
cutoff_id = Mastodon::Snowflake.id_at(2.days.ago, with_random: false) Account
recent_statuses = @account.statuses.recent.where(id: cutoff_id...).limit(200) .joins(:mentions)
.where(mentions: { status: recent_statuses })
Account.joins(:mentions).where(mentions: { status: recent_statuses }).inboxes.take(2000) .inboxes
.take(RECENT_LIMIT)
end end
def relay_inboxes def relay_inboxes
Relay.enabled.pluck(:inbox_url) Relay.enabled.pluck(:inbox_url)
end end
def oldest_status_id
Mastodon::Snowflake
.id_at(STATUS_SINCE.ago, with_random: false)
end
def recent_statuses
@account
.statuses
.recent
.where(id: oldest_status_id...)
.limit(STATUS_LIMIT)
end
end end