- # 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|
- status.discard
- RemovalWorker.perform_async(status.id, { 'redraft' => false })
- num_deleted += 1
- last_deleted = status.id
- end
-
- account_policy.record_last_inspected(last_deleted.presence || cutoff_id)
-
- num_deleted
- end
- end
|