diff --git a/db/migrate/20210427120000_add_unique_index_to_invites.rb b/db/migrate/20210427120000_add_unique_index_to_invites.rb new file mode 100644 index 000000000..cd41fb09d --- /dev/null +++ b/db/migrate/20210427120000_add_unique_index_to_invites.rb @@ -0,0 +1,14 @@ +class AddUniqueIndexToInvites < ActiveRecord::Migration[6.1] + include Database::MigrationHelpers + + disable_ddl_transaction! + + def up + delete_duplicates :invites, [:email, :dossier_id] + add_concurrent_index :invites, [:email, :dossier_id], unique: true + end + + def down + remove_index :invites, column: [:email, :dossier_id] + end +end diff --git a/db/migrate/20210427120001_add_unique_index_to_procedures.rb b/db/migrate/20210427120001_add_unique_index_to_procedures.rb new file mode 100644 index 000000000..2ed79ccfe --- /dev/null +++ b/db/migrate/20210427120001_add_unique_index_to_procedures.rb @@ -0,0 +1,14 @@ +class AddUniqueIndexToProcedures < ActiveRecord::Migration[6.1] + include Database::MigrationHelpers + + disable_ddl_transaction! + + def up + delete_duplicates :procedures, [:path, :closed_at, :hidden_at, :unpublished_at] + add_concurrent_index :procedures, [:path, :closed_at, :hidden_at, :unpublished_at], name: 'procedure_path_uniqueness', unique: true + end + + def down + remove_index :procedures, [:path, :closed_at, :hidden_at, :unpublished_at], name: 'procedure_path_uniqueness' + end +end diff --git a/db/migrate/20210427120002_add_unique_index_to_individuals.rb b/db/migrate/20210427120002_add_unique_index_to_individuals.rb new file mode 100644 index 000000000..39dac52ee --- /dev/null +++ b/db/migrate/20210427120002_add_unique_index_to_individuals.rb @@ -0,0 +1,14 @@ +class AddUniqueIndexToIndividuals < ActiveRecord::Migration[6.1] + include Database::MigrationHelpers + + disable_ddl_transaction! + + def up + delete_duplicates :individuals, [:dossier_id] + add_concurrent_index :individuals, [:dossier_id], unique: true + end + + def down + remove_index :individuals, [:dossier_id] + end +end diff --git a/db/schema.rb b/db/schema.rb index fec39e667..956e5a302 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_04_22_101149) do +ActiveRecord::Schema.define(version: 2021_04_27_120002) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -446,7 +446,7 @@ ActiveRecord::Schema.define(version: 2021_04_22_101149) do t.datetime "created_at" t.datetime "updated_at" t.date "birthdate" - t.index ["dossier_id"], name: "index_individuals_on_dossier_id" + t.index ["dossier_id"], name: "index_individuals_on_dossier_id", unique: true end create_table "initiated_mails", id: :serial, force: :cascade do |t| @@ -474,6 +474,7 @@ ActiveRecord::Schema.define(version: 2021_04_22_101149) do t.datetime "created_at" t.datetime "updated_at" t.text "message" + t.index ["email", "dossier_id"], name: "index_invites_on_email_and_dossier_id", unique: true end create_table "module_api_cartos", id: :serial, force: :cascade do |t| @@ -559,6 +560,7 @@ ActiveRecord::Schema.define(version: 2021_04_22_101149) do t.index ["draft_revision_id"], name: "index_procedures_on_draft_revision_id" t.index ["hidden_at"], name: "index_procedures_on_hidden_at" t.index ["parent_procedure_id"], name: "index_procedures_on_parent_procedure_id" + t.index ["path", "closed_at", "hidden_at", "unpublished_at"], name: "procedure_path_uniqueness", unique: true t.index ["path", "closed_at", "hidden_at"], name: "index_procedures_on_path_and_closed_at_and_hidden_at", unique: true t.index ["published_revision_id"], name: "index_procedures_on_published_revision_id" t.index ["service_id"], name: "index_procedures_on_service_id"