diff --git a/app/models/assign_to.rb b/app/models/assign_to.rb index 8febd4b3c..4343b3375 100644 --- a/app/models/assign_to.rb +++ b/app/models/assign_to.rb @@ -6,7 +6,7 @@ # daily_email_notifications_enabled :boolean default(FALSE), not null # instant_email_dossier_notifications_enabled :boolean default(FALSE), not null # instant_email_message_notifications_enabled :boolean default(FALSE), not null -# instant_expert_avis_email_notifications_enabled :boolean default(FALSE), not null +# instant_expert_avis_email_notifications_enabled :boolean default(FALSE) # manager :boolean default(FALSE) # weekly_email_notifications_enabled :boolean default(TRUE), not null # created_at :datetime diff --git a/db/migrate/20220830125703_add_avis_email_notification.rb b/db/migrate/20220830125703_add_avis_email_notification.rb index 9bf4e9a16..7604b8394 100644 --- a/db/migrate/20220830125703_add_avis_email_notification.rb +++ b/db/migrate/20220830125703_add_avis_email_notification.rb @@ -1,5 +1,10 @@ class AddAvisEmailNotification < ActiveRecord::Migration[6.1] - def change - add_column :assign_tos, :instant_expert_avis_email_notifications_enabled, :boolean, default: false, null: false + def up + add_column :assign_tos, :instant_expert_avis_email_notifications_enabled, :boolean + change_column_default :assign_tos, :instant_expert_avis_email_notifications_enabled, false + end + + def down + remove_column :assign_tos, :instant_expert_avis_email_notifications_enabled end end diff --git a/db/migrate/20220902151143_backfill_add_avis_email_notification.rb b/db/migrate/20220902151143_backfill_add_avis_email_notification.rb new file mode 100644 index 000000000..19a7396b2 --- /dev/null +++ b/db/migrate/20220902151143_backfill_add_avis_email_notification.rb @@ -0,0 +1,10 @@ +class BackfillAddAvisEmailNotification < ActiveRecord::Migration[6.1] + def up + AssignTo.in_batches do |relation| + relation.update_all instant_expert_avis_email_notifications_enabled: false + sleep(0.01) + end + + add_check_constraint :assign_tos, "instant_expert_avis_email_notifications_enabled IS NOT NULL", name: "assign_tos_instant_expert_avis_email_notifications_enabled_null", validate: false + end +end diff --git a/db/migrate/20220902151920_validate_backfill_add_avis_email_notification.rb b/db/migrate/20220902151920_validate_backfill_add_avis_email_notification.rb new file mode 100644 index 000000000..a0433dcfe --- /dev/null +++ b/db/migrate/20220902151920_validate_backfill_add_avis_email_notification.rb @@ -0,0 +1,5 @@ +class ValidateBackfillAddAvisEmailNotification < ActiveRecord::Migration[6.1] + def change + validate_check_constraint :assign_tos, name: "assign_tos_instant_expert_avis_email_notifications_enabled_null" + end +end diff --git a/db/schema.rb b/db/schema.rb index 31a4c228b..361097d7d 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: 2022_08_30_125703) do +ActiveRecord::Schema.define(version: 2022_09_02_151920) do # These are extensions that must be enabled in order to support this database enable_extension "pgcrypto" @@ -111,7 +111,7 @@ ActiveRecord::Schema.define(version: 2022_08_30_125703) do t.bigint "groupe_instructeur_id" t.boolean "instant_email_dossier_notifications_enabled", default: false, null: false t.boolean "instant_email_message_notifications_enabled", default: false, null: false - t.boolean "instant_expert_avis_email_notifications_enabled", default: false, null: false + t.boolean "instant_expert_avis_email_notifications_enabled", default: false t.integer "instructeur_id" t.boolean "manager", default: false t.datetime "updated_at" @@ -119,6 +119,7 @@ ActiveRecord::Schema.define(version: 2022_08_30_125703) do t.index ["groupe_instructeur_id", "instructeur_id"], name: "unique_couple_groupe_instructeur_instructeur", unique: true t.index ["groupe_instructeur_id"], name: "index_assign_tos_on_groupe_instructeur_id" t.index ["instructeur_id"], name: "index_assign_tos_on_instructeur_id" + t.check_constraint "instant_expert_avis_email_notifications_enabled IS NOT NULL", name: "assign_tos_instant_expert_avis_email_notifications_enabled_null" end create_table "attestation_templates", id: :serial, force: :cascade do |t|