diff --git a/db/migrate/20220719122509_add_delete_cascade.rb b/db/migrate/20220719122509_add_delete_cascade.rb index a6220a09e..e66f173ae 100644 --- a/db/migrate/20220719122509_add_delete_cascade.rb +++ b/db/migrate/20220719122509_add_delete_cascade.rb @@ -2,7 +2,7 @@ class AddDeleteCascade < ActiveRecord::Migration[7.0] def up remove_foreign_key :schemes, :organisations, column: "managing_organisation_id" remove_foreign_key :schemes, :organisations, column: "owning_organisation_id" - add_foreign_key :schemes, :organisations, column: "managing_organisation_id", on_delete: :cascade + add_foreign_key :schemes, :organisations, column: "managing_organisation_id" add_foreign_key :schemes, :organisations, column: "owning_organisation_id", on_delete: :cascade end diff --git a/db/migrate/20220719155933_add_f_key_and_delete_cascade_to_org_log.rb b/db/migrate/20220719155933_add_f_key_and_delete_cascade_to_org_log.rb new file mode 100644 index 000000000..83aa61b87 --- /dev/null +++ b/db/migrate/20220719155933_add_f_key_and_delete_cascade_to_org_log.rb @@ -0,0 +1,9 @@ +class AddFKeyAndDeleteCascadeToOrgLog < ActiveRecord::Migration[7.0] + def up + add_foreign_key :case_logs, :organisations, column: "owning_organisation_id", on_delete: :cascade + end + + def down + remove_foreign_key :case_logs, :organisations, column: "owning_organisation_id" + end +end diff --git a/db/migrate/20220720082855_add_delete_cascade_to_schemes_logs.rb b/db/migrate/20220720082855_add_delete_cascade_to_schemes_logs.rb new file mode 100644 index 000000000..bc2257129 --- /dev/null +++ b/db/migrate/20220720082855_add_delete_cascade_to_schemes_logs.rb @@ -0,0 +1,9 @@ +class AddDeleteCascadeToSchemesLogs < ActiveRecord::Migration[7.0] + def up + add_foreign_key :case_logs, :schemes, foreign_key: true, on_delete: :cascade + end + + def down + remove_foreign_key :case_logs, :schemes + end +end diff --git a/db/schema.rb b/db/schema.rb index 67130ebba..91aba2efa 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[7.0].define(version: 2022_07_19_122509) do +ActiveRecord::Schema[7.0].define(version: 2022_07_20_082855) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -200,10 +200,12 @@ ActiveRecord::Schema[7.0].define(version: 2022_07_19_122509) do t.integer "vacdays" t.bigint "scheme_id" t.bigint "location_id" + t.bigint "organisations_id" t.index ["created_by_id"], name: "index_case_logs_on_created_by_id" t.index ["location_id"], name: "index_case_logs_on_location_id" t.index ["managing_organisation_id"], name: "index_case_logs_on_managing_organisation_id" t.index ["old_id"], name: "index_case_logs_on_old_id", unique: true + t.index ["organisations_id"], name: "index_case_logs_on_organisations_id" t.index ["owning_organisation_id"], name: "index_case_logs_on_owning_organisation_id" t.index ["scheme_id"], name: "index_case_logs_on_scheme_id" end @@ -379,9 +381,10 @@ ActiveRecord::Schema[7.0].define(version: 2022_07_19_122509) do end add_foreign_key "case_logs", "locations" - add_foreign_key "case_logs", "schemes" + add_foreign_key "case_logs", "organisations", column: "owning_organisation_id", on_delete: :cascade + add_foreign_key "case_logs", "schemes", on_delete: :cascade add_foreign_key "locations", "schemes" - add_foreign_key "schemes", "organisations", column: "managing_organisation_id", on_delete: :cascade + add_foreign_key "schemes", "organisations", column: "managing_organisation_id" add_foreign_key "schemes", "organisations", column: "owning_organisation_id", on_delete: :cascade add_foreign_key "users", "organisations", on_delete: :cascade end diff --git a/spec/features/organisation_spec.rb b/spec/features/organisation_spec.rb index 9c3668d3c..eacdcd5fd 100644 --- a/spec/features/organisation_spec.rb +++ b/spec/features/organisation_spec.rb @@ -243,7 +243,7 @@ RSpec.describe "User Features" do let!(:organisation) { FactoryBot.create(:organisation) } let!(:user) { FactoryBot.create(:user, :support, last_sign_in_at: Time.zone.now, organisation:) } let!(:scheme_to_delete) { FactoryBot.create(:scheme, owning_organisation: user.organisation) } - let!(:log_to_delete) { FactoryBot.create(:case_log, owning_organisation: user.organisation) } + let!(:log_to_delete) { FactoryBot.create(:case_log, :in_progress, needstype: 1, owning_organisation: user.organisation) } it "child relationships ie logs, schemes and users are deleted too - database" do ActiveRecord::Base.connection.exec_query("DELETE FROM organisations WHERE id = #{organisation.id};")