mirror of
https://github.com/mastodon/mastodon
synced 2024-12-15 07:08:29 +09:00
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.
37 lines
1.0 KiB
Ruby
37 lines
1.0 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
class Scheduler::UserCleanupScheduler
|
|
include Sidekiq::Worker
|
|
|
|
sidekiq_options retry: 0
|
|
|
|
def perform
|
|
clean_unconfirmed_accounts!
|
|
clean_suspended_accounts!
|
|
clean_discarded_statuses!
|
|
end
|
|
|
|
private
|
|
|
|
def clean_unconfirmed_accounts!
|
|
User.where('confirmed_at is NULL AND confirmation_sent_at <= ?', 2.days.ago).reorder(nil).find_in_batches do |batch|
|
|
Account.where(id: batch.map(&:account_id)).delete_all
|
|
User.where(id: batch.map(&:id)).delete_all
|
|
end
|
|
end
|
|
|
|
def clean_suspended_accounts!
|
|
AccountDeletionRequest.where('created_at <= ?', AccountDeletionRequest::DELAY_TO_DELETION.ago).reorder(nil).find_each do |deletion_request|
|
|
Admin::AccountDeletionWorker.perform_async(deletion_request.account_id)
|
|
end
|
|
end
|
|
|
|
def clean_discarded_statuses!
|
|
Status.discarded.where('deleted_at <= ?', 30.days.ago).find_in_batches do |statuses|
|
|
RemovalWorker.push_bulk(statuses) do |status|
|
|
[status.id, { 'immediate' => true }]
|
|
end
|
|
end
|
|
end
|
|
end
|