This repository has been archived on 2024-07-22. You can view files and clone it, but cannot push or open issues or pull requests.
2021-08-09 14:11:50 -07:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
|
|
class AccountStatusesCleanupService < BaseService
|
|
|
|
# @param [AccountStatusesCleanupPolicy] account_policy
|
|
|
|
# @param [Integer] budget
|
|
|
|
# @return [Integer]
|
|
|
|
def call(account_policy, budget = 50)
|
|
|
|
return 0 unless account_policy.enabled?
|
|
|
|
|
|
|
|
cutoff_id = account_policy.compute_cutoff_id
|
|
|
|
return 0 if cutoff_id.blank?
|
|
|
|
|
|
|
|
num_deleted = 0
|
|
|
|
last_deleted = nil
|
|
|
|
|
|
|
|
account_policy.statuses_to_delete(budget, cutoff_id, account_policy.last_inspected).reorder(nil).find_each(order: :asc) do |status|
|
2022-11-04 08:31:44 -07:00
|
|
|
status.discard_with_reblogs
|
2022-01-27 15:43:56 -08:00
|
|
|
RemovalWorker.perform_async(status.id, { 'redraft' => false })
|
2021-08-09 14:11:50 -07:00
|
|
|
num_deleted += 1
|
|
|
|
last_deleted = status.id
|
|
|
|
end
|
|
|
|
|
|
|
|
account_policy.record_last_inspected(last_deleted.presence || cutoff_id)
|
|
|
|
|
|
|
|
num_deleted
|
|
|
|
end
|
|
|
|
end
|