Unverified Commit 245ad9e0 authored by Benjamin Neff's avatar Benjamin Neff
Browse files

Remove diaspora_handle from AccountDeletions and add unique index

parent fa0b78f5
Loading
Loading
Loading
Loading
+4 −12
Original line number Diff line number Diff line
@@ -5,23 +5,15 @@
class AccountDeletion < ApplicationRecord
  include Diaspora::Federated::Base

  scope :uncompleted, -> { where('completed_at is null') }
  scope :uncompleted, -> { where("completed_at is null") }

  belongs_to :person
  after_commit :queue_delete_account, :on => :create
  after_commit :queue_delete_account, on: :create

  def person=(person)
    self[:diaspora_handle] = person.diaspora_handle
    self[:person_id] = person.id
  end

  def diaspora_handle=(diaspora_handle)
    self[:diaspora_handle] = diaspora_handle
    self[:person_id] ||= Person.find_by_diaspora_handle(diaspora_handle).id
  end
  delegate :diaspora_handle, to: :person

  def queue_delete_account
    Workers::DeleteAccount.perform_async(self.id)
    Workers::DeleteAccount.perform_async(id)
  end

  def perform!
+1 −1
Original line number Diff line number Diff line
@@ -507,7 +507,7 @@ class User < ApplicationRecord
  def close_account!
    self.person.lock_access!
    self.lock_access!
    AccountDeletion.create(:person => self.person)
    AccountDeletion.create(person: person)
  end

  def closed_account?
+19 −0
Original line number Diff line number Diff line
class CleanupAccountDeletionsAndAddUniqueIndex < ActiveRecord::Migration[5.1]
  def up
    remove_column :account_deletions, :diaspora_handle

    duplicate_query = "WHERE a1.person_id = a2.person_id AND a1.id > a2.id"
    if AppConfig.postgres?
      execute("DELETE FROM account_deletions AS a1 USING account_deletions AS a2 #{duplicate_query}")
    else
      execute("DELETE a1 FROM account_deletions a1, account_deletions a2 #{duplicate_query}")
    end

    add_index :account_deletions, :person_id, name: :index_account_deletions_on_person_id, unique: true
  end

  def down
    remove_index :account_deletions, name: :index_account_deletions_on_person_id
    add_column :account_deletions, :diaspora_handle, :string
  end
end
+1 −1
Original line number Diff line number Diff line
@@ -106,6 +106,6 @@ class AccountDeleter
  end

  def mark_account_deletion_complete
    AccountDeletion.where(:diaspora_handle => self.person.diaspora_handle).where(:person_id => self.person.id).update_all(["completed_at = ?", Time.now])
    AccountDeletion.find_by(person: person)&.update_attributes(completed_at: Time.now.utc)
  end
end
+1 −1
Original line number Diff line number Diff line
@@ -8,7 +8,7 @@ module Diaspora
      end

      def self.account_deletion(entity)
        AccountDeletion.create!(person: author_of(entity), diaspora_handle: entity.author)
        AccountDeletion.create!(person: author_of(entity))
      end

      def self.comment(entity)
Loading