From 8d656086668cb73e5e5664a3381603284f94801b Mon Sep 17 00:00:00 2001 From: Sojan Jose Date: Sun, 19 Dec 2021 09:47:07 +0530 Subject: [PATCH] chore: Clean up migrations (#3613) Fixes: #3530 --- .rubocop.yml | 2 + app/models/account_user.rb | 4 +- app/models/agent_bot.rb | 2 +- app/models/campaign.rb | 4 +- app/models/contact_inbox.rb | 4 +- app/models/conversation.rb | 6 +- app/models/csat_survey_response.rb | 10 +-- app/models/data_import.rb | 2 +- app/models/mention.rb | 4 +- app/models/note.rb | 6 +- app/models/team.rb | 2 +- app/models/team_member.rb | 4 +- ...219031453_update_foreign_keys_on_delete.rb | 66 +++++++++++++++++++ db/schema.rb | 44 ++++++------- 14 files changed, 114 insertions(+), 46 deletions(-) create mode 100644 db/migrate/20211219031453_update_foreign_keys_on_delete.rb diff --git a/.rubocop.yml b/.rubocop.yml index 8f8473547..e9964b1c0 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -87,6 +87,7 @@ Naming/VariableNumber: Metrics/MethodLength: Exclude: - 'db/migrate/20161123131628_devise_token_auth_create_users.rb' + - 'db/migrate/20211219031453_update_foreign_keys_on_delete.rb' Rails/CreateTableWithTimestamps: Exclude: - 'db/migrate/20170207092002_acts_as_taggable_on_migration.acts_as_taggable_on_engine.rb' @@ -102,6 +103,7 @@ Metrics/AbcSize: - 'db/migrate/20190819005836_add_missing_indexes_on_taggings.acts_as_taggable_on_engine.rb' - 'db/migrate/20161123131628_devise_token_auth_create_users.rb' - 'app/controllers/api/v1/accounts/inboxes_controller.rb' + - 'db/migrate/20211219031453_update_foreign_keys_on_delete.rb' Metrics/CyclomaticComplexity: Max: 7 Exclude: diff --git a/app/models/account_user.rb b/app/models/account_user.rb index 8f06253fc..526160c5d 100644 --- a/app/models/account_user.rb +++ b/app/models/account_user.rb @@ -21,8 +21,8 @@ # # Foreign Keys # -# fk_rails_... (account_id => accounts.id) -# fk_rails_... (user_id => users.id) +# fk_rails_... (account_id => accounts.id) ON DELETE => cascade +# fk_rails_... (user_id => users.id) ON DELETE => cascade # class AccountUser < ApplicationRecord diff --git a/app/models/agent_bot.rb b/app/models/agent_bot.rb index beff22a22..f1089c543 100644 --- a/app/models/agent_bot.rb +++ b/app/models/agent_bot.rb @@ -16,7 +16,7 @@ # # Foreign Keys # -# fk_rails_... (account_id => accounts.id) +# fk_rails_... (account_id => accounts.id) ON DELETE => cascade # class AgentBot < ApplicationRecord diff --git a/app/models/campaign.rb b/app/models/campaign.rb index fea99aa30..a103eb44f 100644 --- a/app/models/campaign.rb +++ b/app/models/campaign.rb @@ -30,8 +30,8 @@ # # Foreign Keys # -# fk_rails_... (account_id => accounts.id) -# fk_rails_... (inbox_id => inboxes.id) +# fk_rails_... (account_id => accounts.id) ON DELETE => cascade +# fk_rails_... (inbox_id => inboxes.id) ON DELETE => cascade # class Campaign < ApplicationRecord validates :account_id, presence: true diff --git a/app/models/contact_inbox.rb b/app/models/contact_inbox.rb index 9a6564546..bc4eb6484 100644 --- a/app/models/contact_inbox.rb +++ b/app/models/contact_inbox.rb @@ -21,8 +21,8 @@ # # Foreign Keys # -# fk_rails_... (contact_id => contacts.id) -# fk_rails_... (inbox_id => inboxes.id) +# fk_rails_... (contact_id => contacts.id) ON DELETE => cascade +# fk_rails_... (inbox_id => inboxes.id) ON DELETE => cascade # class ContactInbox < ApplicationRecord diff --git a/app/models/conversation.rb b/app/models/conversation.rb index 457ebe145..c221d806e 100644 --- a/app/models/conversation.rb +++ b/app/models/conversation.rb @@ -36,9 +36,9 @@ # # Foreign Keys # -# fk_rails_... (campaign_id => campaigns.id) -# fk_rails_... (contact_inbox_id => contact_inboxes.id) -# fk_rails_... (team_id => teams.id) +# fk_rails_... (campaign_id => campaigns.id) ON DELETE => cascade +# fk_rails_... (contact_inbox_id => contact_inboxes.id) ON DELETE => cascade +# fk_rails_... (team_id => teams.id) ON DELETE => cascade # class Conversation < ApplicationRecord diff --git a/app/models/csat_survey_response.rb b/app/models/csat_survey_response.rb index eec70c8b4..3f6a606de 100644 --- a/app/models/csat_survey_response.rb +++ b/app/models/csat_survey_response.rb @@ -23,11 +23,11 @@ # # Foreign Keys # -# fk_rails_... (account_id => accounts.id) -# fk_rails_... (assigned_agent_id => users.id) -# fk_rails_... (contact_id => contacts.id) -# fk_rails_... (conversation_id => conversations.id) -# fk_rails_... (message_id => messages.id) +# fk_rails_... (account_id => accounts.id) ON DELETE => cascade +# fk_rails_... (assigned_agent_id => users.id) ON DELETE => cascade +# fk_rails_... (contact_id => contacts.id) ON DELETE => cascade +# fk_rails_... (conversation_id => conversations.id) ON DELETE => cascade +# fk_rails_... (message_id => messages.id) ON DELETE => cascade # class CsatSurveyResponse < ApplicationRecord belongs_to :account diff --git a/app/models/data_import.rb b/app/models/data_import.rb index 6b3db0c06..85386b3d1 100644 --- a/app/models/data_import.rb +++ b/app/models/data_import.rb @@ -18,7 +18,7 @@ # # Foreign Keys # -# fk_rails_... (account_id => accounts.id) +# fk_rails_... (account_id => accounts.id) ON DELETE => cascade # class DataImport < ApplicationRecord belongs_to :account diff --git a/app/models/mention.rb b/app/models/mention.rb index 14eaed504..b326d88b6 100644 --- a/app/models/mention.rb +++ b/app/models/mention.rb @@ -19,8 +19,8 @@ # # Foreign Keys # -# fk_rails_... (conversation_id => conversations.id) -# fk_rails_... (user_id => users.id) +# fk_rails_... (conversation_id => conversations.id) ON DELETE => cascade +# fk_rails_... (user_id => users.id) ON DELETE => cascade # class Mention < ApplicationRecord before_validation :ensure_account_id diff --git a/app/models/note.rb b/app/models/note.rb index 114a6fdbb..c33fd79b2 100644 --- a/app/models/note.rb +++ b/app/models/note.rb @@ -18,9 +18,9 @@ # # Foreign Keys # -# fk_rails_... (account_id => accounts.id) -# fk_rails_... (contact_id => contacts.id) -# fk_rails_... (user_id => users.id) +# fk_rails_... (account_id => accounts.id) ON DELETE => cascade +# fk_rails_... (contact_id => contacts.id) ON DELETE => cascade +# fk_rails_... (user_id => users.id) ON DELETE => cascade # class Note < ApplicationRecord before_validation :ensure_account_id diff --git a/app/models/team.rb b/app/models/team.rb index dd4713662..74ce2aedf 100644 --- a/app/models/team.rb +++ b/app/models/team.rb @@ -17,7 +17,7 @@ # # Foreign Keys # -# fk_rails_... (account_id => accounts.id) +# fk_rails_... (account_id => accounts.id) ON DELETE => cascade # class Team < ApplicationRecord belongs_to :account diff --git a/app/models/team_member.rb b/app/models/team_member.rb index 0938e9028..309d0e8e7 100644 --- a/app/models/team_member.rb +++ b/app/models/team_member.rb @@ -16,8 +16,8 @@ # # Foreign Keys # -# fk_rails_... (team_id => teams.id) -# fk_rails_... (user_id => users.id) +# fk_rails_... (team_id => teams.id) ON DELETE => cascade +# fk_rails_... (user_id => users.id) ON DELETE => cascade # class TeamMember < ApplicationRecord belongs_to :user diff --git a/db/migrate/20211219031453_update_foreign_keys_on_delete.rb b/db/migrate/20211219031453_update_foreign_keys_on_delete.rb new file mode 100644 index 000000000..61e71cc52 --- /dev/null +++ b/db/migrate/20211219031453_update_foreign_keys_on_delete.rb @@ -0,0 +1,66 @@ +class UpdateForeignKeysOnDelete < ActiveRecord::Migration[6.1] + def change + remove_foreign_key 'account_users', 'accounts' + add_foreign_key 'account_users', 'accounts', on_delete: :cascade + + remove_foreign_key 'account_users', 'users' + add_foreign_key 'account_users', 'users', on_delete: :cascade + + remove_foreign_key 'agent_bots', 'accounts' + add_foreign_key 'agent_bots', 'accounts', on_delete: :cascade + + remove_foreign_key 'campaigns', 'accounts' + add_foreign_key 'campaigns', 'accounts', on_delete: :cascade + + remove_foreign_key 'campaigns', 'inboxes' + add_foreign_key 'campaigns', 'inboxes', on_delete: :cascade + + remove_foreign_key 'conversations', 'campaigns' + add_foreign_key 'conversations', 'campaigns', on_delete: :cascade + + remove_foreign_key 'conversations', 'teams' + add_foreign_key 'conversations', 'teams', on_delete: :cascade + + remove_foreign_key 'csat_survey_responses', 'accounts' + add_foreign_key 'csat_survey_responses', 'accounts', on_delete: :cascade + + remove_foreign_key 'csat_survey_responses', 'contacts' + add_foreign_key 'csat_survey_responses', 'contacts', on_delete: :cascade + + remove_foreign_key 'csat_survey_responses', 'conversations' + add_foreign_key 'csat_survey_responses', 'conversations', on_delete: :cascade + + remove_foreign_key 'csat_survey_responses', 'messages' + add_foreign_key 'csat_survey_responses', 'messages', on_delete: :cascade + + remove_foreign_key 'csat_survey_responses', 'users', column: 'assigned_agent_id' + add_foreign_key 'csat_survey_responses', 'users', column: 'assigned_agent_id', on_delete: :cascade + + remove_foreign_key 'data_imports', 'accounts' + add_foreign_key 'data_imports', 'accounts', on_delete: :cascade + + remove_foreign_key 'mentions', 'conversations' + add_foreign_key 'mentions', 'conversations', on_delete: :cascade + + remove_foreign_key 'mentions', 'users' + add_foreign_key 'mentions', 'users', on_delete: :cascade + + remove_foreign_key 'notes', 'accounts' + add_foreign_key 'notes', 'accounts', on_delete: :cascade + + remove_foreign_key 'notes', 'contacts' + add_foreign_key 'notes', 'contacts', on_delete: :cascade + + remove_foreign_key 'notes', 'users' + add_foreign_key 'notes', 'users', on_delete: :cascade + + remove_foreign_key 'team_members', 'teams' + add_foreign_key 'team_members', 'teams', on_delete: :cascade + + remove_foreign_key 'team_members', 'users' + add_foreign_key 'team_members', 'users', on_delete: :cascade + + remove_foreign_key 'teams', 'accounts' + add_foreign_key 'teams', 'accounts', on_delete: :cascade + end +end diff --git a/db/schema.rb b/db/schema.rb index cbc9e2fae..52b7cd861 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2021_12_08_085931) do +ActiveRecord::Schema.define(version: 2021_12_19_031453) do # These are extensions that must be enabled in order to support this database enable_extension "pg_stat_statements" @@ -761,32 +761,32 @@ ActiveRecord::Schema.define(version: 2021_12_08_085931) do t.index ["inbox_id"], name: "index_working_hours_on_inbox_id" end - add_foreign_key "account_users", "accounts" - add_foreign_key "account_users", "users" + add_foreign_key "account_users", "accounts", on_delete: :cascade + add_foreign_key "account_users", "users", on_delete: :cascade add_foreign_key "active_storage_attachments", "active_storage_blobs", column: "blob_id" add_foreign_key "active_storage_variant_records", "active_storage_blobs", column: "blob_id" - add_foreign_key "agent_bots", "accounts" - add_foreign_key "campaigns", "accounts" - add_foreign_key "campaigns", "inboxes" + add_foreign_key "agent_bots", "accounts", on_delete: :cascade + add_foreign_key "campaigns", "accounts", on_delete: :cascade + add_foreign_key "campaigns", "inboxes", on_delete: :cascade add_foreign_key "contact_inboxes", "contacts", on_delete: :cascade add_foreign_key "contact_inboxes", "inboxes", on_delete: :cascade - add_foreign_key "conversations", "campaigns" + add_foreign_key "conversations", "campaigns", on_delete: :cascade add_foreign_key "conversations", "contact_inboxes", on_delete: :cascade - add_foreign_key "conversations", "teams" - add_foreign_key "csat_survey_responses", "accounts" - add_foreign_key "csat_survey_responses", "contacts" - add_foreign_key "csat_survey_responses", "conversations" - add_foreign_key "csat_survey_responses", "messages" - add_foreign_key "csat_survey_responses", "users", column: "assigned_agent_id" - add_foreign_key "data_imports", "accounts" - add_foreign_key "mentions", "conversations" - add_foreign_key "mentions", "users" - add_foreign_key "notes", "accounts" - add_foreign_key "notes", "contacts" - add_foreign_key "notes", "users" - add_foreign_key "team_members", "teams" - add_foreign_key "team_members", "users" - add_foreign_key "teams", "accounts" + add_foreign_key "conversations", "teams", on_delete: :cascade + add_foreign_key "csat_survey_responses", "accounts", on_delete: :cascade + add_foreign_key "csat_survey_responses", "contacts", on_delete: :cascade + add_foreign_key "csat_survey_responses", "conversations", on_delete: :cascade + add_foreign_key "csat_survey_responses", "messages", on_delete: :cascade + add_foreign_key "csat_survey_responses", "users", column: "assigned_agent_id", on_delete: :cascade + add_foreign_key "data_imports", "accounts", on_delete: :cascade + add_foreign_key "mentions", "conversations", on_delete: :cascade + add_foreign_key "mentions", "users", on_delete: :cascade + add_foreign_key "notes", "accounts", on_delete: :cascade + add_foreign_key "notes", "contacts", on_delete: :cascade + add_foreign_key "notes", "users", on_delete: :cascade + add_foreign_key "team_members", "teams", on_delete: :cascade + add_foreign_key "team_members", "users", on_delete: :cascade + add_foreign_key "teams", "accounts", on_delete: :cascade create_trigger("accounts_after_insert_row_tr", :generated => true, :compatibility => 1). on("accounts"). after(:insert).