feat: Sort contacts via name, email, phone_number, last_activity_at (#1870)

This commit is contained in:
Pranav Raj S
2021-05-13 13:32:19 +05:30
committed by GitHub
parent 368bab2553
commit 0e6cd699e8
24 changed files with 279 additions and 76 deletions

View File

@@ -0,0 +1,22 @@
class AddLastActivityAtToContacts < ActiveRecord::Migration[6.0]
def up
# rubocop:disable Rails/SkipsModelValidations
add_column :contacts, :last_activity_at, :datetime, index: true, default: nil
Conversation.find_in_batches do |conversation_batch|
conversation_batch.each do |conversation|
contact = conversation.contact
if contact.last_activity_at.nil? || conversation.updated_at > contact.last_activity_at
contact.update_columns(last_activity_at: conversation.updated_at)
end
end
end
Contact.where(additional_attributes: nil).update_all(additional_attributes: {})
Contact.where(phone_number: '').update_all(phone_number: nil)
# rubocop:enable Rails/SkipsModelValidations
end
def down
remove_column :contacts, :last_activity_at, :datetime, index: true, default: nil
end
end

View File

@@ -228,6 +228,7 @@ ActiveRecord::Schema.define(version: 2021_04_30_100138) do
t.jsonb "additional_attributes", default: {}
t.string "identifier"
t.jsonb "custom_attributes", default: {}
t.datetime "last_activity_at"
t.index ["account_id"], name: "index_contacts_on_account_id"
t.index ["email", "account_id"], name: "uniq_email_per_account_contact", unique: true
t.index ["identifier", "account_id"], name: "uniq_identifier_per_account_contact", unique: true