about summary refs log tree commit diff
path: root/app/services/suspend_account_service.rb
diff options
context:
space:
mode:
authoralpaca-tc <alpaca-tc@alpaca.tc>2017-05-05 06:44:39 +0900
committerEugen Rochko <eugen@zeonfederated.com>2017-05-04 23:44:39 +0200
commit74c8ca699c37ebdb0e3c6f0648f9f90a4f1f8f89 (patch)
tree74e9d9dfb474acd1ec7f74bb42177b8d0b396136 /app/services/suspend_account_service.rb
parenteddb95b0126e523faeafbde544ff5df3a64e5b25 (diff)
Delete records in smaller transaction (#2802)
Diffstat (limited to 'app/services/suspend_account_service.rb')
-rw-r--r--app/services/suspend_account_service.rb22
1 files changed, 15 insertions, 7 deletions
diff --git a/app/services/suspend_account_service.rb b/app/services/suspend_account_service.rb
index 66517470e..0cf574ca2 100644
--- a/app/services/suspend_account_service.rb
+++ b/app/services/suspend_account_service.rb
@@ -17,12 +17,16 @@ class SuspendAccountService < BaseService
       RemoveStatusService.new.call(status)
     end
 
-    @account.media_attachments.destroy_all
-    @account.stream_entries.destroy_all
-    @account.notifications.destroy_all
-    @account.favourites.destroy_all
-    @account.active_relationships.destroy_all
-    @account.passive_relationships.destroy_all
+    [
+      @account.media_attachments,
+      @account.stream_entries,
+      @account.notifications,
+      @account.favourites,
+      @account.active_relationships,
+      @account.passive_relationships
+    ].each do |association|
+      destroy_all(association)
+    end
   end
 
   def purge_profile
@@ -35,6 +39,10 @@ class SuspendAccountService < BaseService
   end
 
   def unsubscribe_push_subscribers
-    @account.subscriptions.destroy_all
+    destroy_all(@account.subscriptions)
+  end
+
+  def destroy_all(association)
+    association.in_batches.destroy_all
   end
 end