fix: drop conv and campaign seq on account delete (#4256)
Conversation and campaign sequences persist in the database even after the related account is deleted. This PR adds an after_desttory callback on the account model that will delete the associated sequences. Fixes: #4252
This commit is contained in:
parent
0cf970dafd
commit
7577c9c888
2 changed files with 16 additions and 0 deletions
|
@ -79,6 +79,7 @@ class Account < ApplicationRecord
|
|||
|
||||
before_validation :validate_limit_keys
|
||||
after_create_commit :notify_creation
|
||||
after_destroy :remove_account_sequences
|
||||
|
||||
def agents
|
||||
users.where(account_users: { role: :agent })
|
||||
|
@ -137,4 +138,9 @@ class Account < ApplicationRecord
|
|||
def validate_limit_keys
|
||||
# method overridden in enterprise module
|
||||
end
|
||||
|
||||
def remove_account_sequences
|
||||
ActiveRecord::Base.connection.exec_query("drop sequence IF EXISTS camp_dpid_seq_#{id}")
|
||||
ActiveRecord::Base.connection.exec_query("drop sequence IF EXISTS conv_dpid_seq_#{id}")
|
||||
end
|
||||
end
|
||||
|
|
|
@ -30,4 +30,14 @@ RSpec.describe Account do
|
|||
expect(account.usage_limits).to eq({ agents: ChatwootApp.max_limit, inboxes: ChatwootApp.max_limit })
|
||||
end
|
||||
end
|
||||
|
||||
context 'when after_destroy is called' do
|
||||
it 'conv_dpid_seq and camp_dpid_seq_ are deleted' do
|
||||
account = create(:account)
|
||||
query = "select * from information_schema.sequences where sequence_name in ('camp_dpid_seq_#{account.id}', 'conv_dpid_seq_#{account.id}');"
|
||||
expect(ActiveRecord::Base.connection.execute(query).count).to eq(2)
|
||||
account.destroy
|
||||
expect(ActiveRecord::Base.connection.execute(query).count).to eq(0)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue