Fix unnecessary queries when batch-removing statuses, 100x faster (#15387)

This commit is contained in:
Eugen Rochko
2020-12-22 17:13:55 +01:00
committed by GitHub
parent 67ebd61f11
commit 9915d11c0d
7 changed files with 168 additions and 100 deletions

View File

@ -228,14 +228,6 @@ class Status < ApplicationRecord
@emojis = CustomEmoji.from_text(fields.join(' '), account.domain)
end
def mark_for_mass_destruction!
@marked_for_mass_destruction = true
end
def marked_for_mass_destruction?
@marked_for_mass_destruction
end
def replies_count
status_stat&.replies_count || 0
end
@ -430,7 +422,7 @@ class Status < ApplicationRecord
end
def decrement_counter_caches
return if direct_visibility? || marked_for_mass_destruction?
return if direct_visibility?
account&.decrement_count!(:statuses_count)
reblog&.decrement_count!(:reblogs_count) if reblog?
@ -440,7 +432,7 @@ class Status < ApplicationRecord
def unlink_from_conversations
return unless direct_visibility?
mentioned_accounts = mentions.includes(:account).map(&:account)
mentioned_accounts = (association(:mentions).loaded? ? mentions : mentions.includes(:account)).map(&:account)
inbox_owners = mentioned_accounts.select(&:local?) + (account.local? ? [account] : [])
inbox_owners.each do |inbox_owner|