* 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
 |