28 lines
689 B
Ruby
28 lines
689 B
Ruby
class Internal::DeleteAccountsJob < ApplicationJob
|
|
queue_as :scheduled_jobs
|
|
|
|
def perform
|
|
delete_expired_accounts
|
|
end
|
|
|
|
private
|
|
|
|
def delete_expired_accounts
|
|
accounts_pending_deletion.each do |account|
|
|
AccountDeletionService.new(account: account).perform
|
|
end
|
|
end
|
|
|
|
def accounts_pending_deletion
|
|
Account.where("custom_attributes->>'marked_for_deletion_at' IS NOT NULL")
|
|
.select { |account| deletion_period_expired?(account) }
|
|
end
|
|
|
|
def deletion_period_expired?(account)
|
|
deletion_time = account.custom_attributes['marked_for_deletion_at']
|
|
return false if deletion_time.blank?
|
|
|
|
DateTime.parse(deletion_time) <= Time.current
|
|
end
|
|
end
|