diff options
author | Claire <claire.github-309c@sitedethib.com> | 2021-08-09 23:25:49 +0200 |
---|---|---|
committer | Claire <claire.github-309c@sitedethib.com> | 2021-08-09 23:25:49 +0200 |
commit | 8ec4be4233d2bfd9142860b25df639fc23655f0f (patch) | |
tree | e0b7f33c4ae22827a7a56aa9cac5fabdd77ee57f /app/services | |
parent | a61645ed30b854a1b4935026801eb5b287954095 (diff) | |
parent | 4ac78e2a066508a54de82f1d910ef2fd36c3d106 (diff) |
Merge branch 'main' into glitch-soc/merge-upstream
Conflicts: - `Gemfile.lock`: Not a real conflict, upstream-updated dependency (redis) textually too close to glitch-soc-only dependecy. Updated redis gem like upstream did.
Diffstat (limited to 'app/services')
-rw-r--r-- | app/services/account_statuses_cleanup_service.rb | 27 | ||||
-rw-r--r-- | app/services/delete_account_service.rb | 2 |
2 files changed, 29 insertions, 0 deletions
diff --git a/app/services/account_statuses_cleanup_service.rb b/app/services/account_statuses_cleanup_service.rb new file mode 100644 index 000000000..cbadecc63 --- /dev/null +++ b/app/services/account_statuses_cleanup_service.rb @@ -0,0 +1,27 @@ +# 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 diff --git a/app/services/delete_account_service.rb b/app/services/delete_account_service.rb index 182f0e127..d8270498a 100644 --- a/app/services/delete_account_service.rb +++ b/app/services/delete_account_service.rb @@ -4,6 +4,7 @@ class DeleteAccountService < BaseService include Payloadable ASSOCIATIONS_ON_SUSPEND = %w( + account_notes account_pins active_relationships aliases @@ -34,6 +35,7 @@ class DeleteAccountService < BaseService # by foreign keys, making them safe to delete without loading # into memory ASSOCIATIONS_WITHOUT_SIDE_EFFECTS = %w( + account_notes account_pins aliases conversation_mutes |