03d59340da
* Fix Sidekiq warnings about JSON serialization This occurs on every symbol argument we pass, and every symbol key in hashes, because Sidekiq expects strings instead. See https://github.com/mperham/sidekiq/pull/5071 We do not need to change how workers parse their arguments because this has not changed and we were already converting to symbols adequately or using `with_indifferent_access`. * Set Sidekiq to raise on unsafe arguments in test mode In order to more easily catch issues that would produce warnings in production code.
27 lines
793 B
Ruby
27 lines
793 B
Ruby
# 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
|