# frozen_string_literal: true class SuspendAccountService < BaseService def call(account) @account = account purge_content purge_profile unsubscribe_push_subscribers end private def purge_content @account.statuses.reorder(nil).find_each do |status| # This federates out deletes to previous followers RemoveStatusService.new.call(status) end [ @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 @account.suspended = true @account.display_name = '' @account.note = '' @account.avatar.destroy @account.header.destroy @account.save! end def unsubscribe_push_subscribers destroy_all(@account.subscriptions) end def destroy_all(association) association.in_batches.destroy_all end end