From 84b9644bcdaa47e136d32f83e350b8d713b4afc4 Mon Sep 17 00:00:00 2001 From: Paul Chavard Date: Thu, 15 Sep 2022 11:27:50 +0200 Subject: [PATCH] fix(db): add missing foreign keys --- app/models/champ.rb | 4 ++-- app/models/champs/address_champ.rb | 4 ++-- app/models/champs/annuaire_education_champ.rb | 4 ++-- app/models/champs/carte_champ.rb | 4 ++-- app/models/champs/checkbox_champ.rb | 4 ++-- app/models/champs/civilite_champ.rb | 4 ++-- app/models/champs/cnaf_champ.rb | 4 ++-- app/models/champs/commune_champ.rb | 4 ++-- app/models/champs/date_champ.rb | 4 ++-- app/models/champs/datetime_champ.rb | 4 ++-- app/models/champs/decimal_number_champ.rb | 4 ++-- app/models/champs/departement_champ.rb | 4 ++-- app/models/champs/dgfip_champ.rb | 4 ++-- app/models/champs/dossier_link_champ.rb | 4 ++-- app/models/champs/drop_down_list_champ.rb | 4 ++-- app/models/champs/email_champ.rb | 4 ++-- app/models/champs/engagement_champ.rb | 4 ++-- app/models/champs/explication_champ.rb | 4 ++-- app/models/champs/header_section_champ.rb | 4 ++-- app/models/champs/iban_champ.rb | 4 ++-- app/models/champs/integer_number_champ.rb | 4 ++-- app/models/champs/linked_drop_down_list_champ.rb | 4 ++-- app/models/champs/mesri_champ.rb | 4 ++-- app/models/champs/multiple_drop_down_list_champ.rb | 4 ++-- app/models/champs/number_champ.rb | 4 ++-- app/models/champs/pays_champ.rb | 4 ++-- app/models/champs/phone_champ.rb | 4 ++-- app/models/champs/piece_justificative_champ.rb | 4 ++-- app/models/champs/pole_emploi_champ.rb | 4 ++-- app/models/champs/region_champ.rb | 4 ++-- app/models/champs/repetition_champ.rb | 4 ++-- app/models/champs/siret_champ.rb | 4 ++-- app/models/champs/text_champ.rb | 4 ++-- app/models/champs/textarea_champ.rb | 4 ++-- app/models/champs/titre_identite_champ.rb | 4 ++-- app/models/champs/yes_no_champ.rb | 4 ++-- db/migrate/20220727084308_add_missing_foreign_keys.rb | 11 +++++++++++ .../20220727085155_validate_missing_foreign_keys.rb | 8 ++++++++ ...32450_validate_not_null_champs_type_de_champ_id.rb | 7 +++++++ ...20727132456_validate_not_null_champs_dossier_id.rb | 7 +++++++ db/schema.rb | 10 +++++++--- 41 files changed, 112 insertions(+), 75 deletions(-) create mode 100644 db/migrate/20220727084308_add_missing_foreign_keys.rb create mode 100644 db/migrate/20220727085155_validate_missing_foreign_keys.rb create mode 100644 db/migrate/20220727132450_validate_not_null_champs_type_de_champ_id.rb create mode 100644 db/migrate/20220727132456_validate_not_null_champs_dossier_id.rb diff --git a/app/models/champ.rb b/app/models/champ.rb index 41fd80a34..5688be2d6 100644 --- a/app/models/champ.rb +++ b/app/models/champ.rb @@ -13,11 +13,11 @@ # value_json :jsonb # created_at :datetime # updated_at :datetime -# dossier_id :integer +# dossier_id :integer not null # etablissement_id :integer # external_id :string # parent_id :bigint -# type_de_champ_id :integer +# type_de_champ_id :integer not null # class Champ < ApplicationRecord belongs_to :dossier, inverse_of: false, touch: true, optional: false diff --git a/app/models/champs/address_champ.rb b/app/models/champs/address_champ.rb index c6298b99a..ea506dd24 100644 --- a/app/models/champs/address_champ.rb +++ b/app/models/champs/address_champ.rb @@ -13,11 +13,11 @@ # value_json :jsonb # created_at :datetime # updated_at :datetime -# dossier_id :integer +# dossier_id :integer not null # etablissement_id :integer # external_id :string # parent_id :bigint -# type_de_champ_id :integer +# type_de_champ_id :integer not null # class Champs::AddressChamp < Champs::TextChamp def full_address? diff --git a/app/models/champs/annuaire_education_champ.rb b/app/models/champs/annuaire_education_champ.rb index 727a5a4bf..fa884d526 100644 --- a/app/models/champs/annuaire_education_champ.rb +++ b/app/models/champs/annuaire_education_champ.rb @@ -13,11 +13,11 @@ # value_json :jsonb # created_at :datetime # updated_at :datetime -# dossier_id :integer +# dossier_id :integer not null # etablissement_id :integer # external_id :string # parent_id :bigint -# type_de_champ_id :integer +# type_de_champ_id :integer not null # class Champs::AnnuaireEducationChamp < Champs::TextChamp def fetch_external_data? diff --git a/app/models/champs/carte_champ.rb b/app/models/champs/carte_champ.rb index 4f351ba0e..363974f07 100644 --- a/app/models/champs/carte_champ.rb +++ b/app/models/champs/carte_champ.rb @@ -13,11 +13,11 @@ # value_json :jsonb # created_at :datetime # updated_at :datetime -# dossier_id :integer +# dossier_id :integer not null # etablissement_id :integer # external_id :string # parent_id :bigint -# type_de_champ_id :integer +# type_de_champ_id :integer not null # class Champs::CarteChamp < Champ # Default map location. Center of the World, ahm, France... diff --git a/app/models/champs/checkbox_champ.rb b/app/models/champs/checkbox_champ.rb index a500abb59..559c44e31 100644 --- a/app/models/champs/checkbox_champ.rb +++ b/app/models/champs/checkbox_champ.rb @@ -13,11 +13,11 @@ # value_json :jsonb # created_at :datetime # updated_at :datetime -# dossier_id :integer +# dossier_id :integer not null # etablissement_id :integer # external_id :string # parent_id :bigint -# type_de_champ_id :integer +# type_de_champ_id :integer not null # class Champs::CheckboxChamp < Champs::YesNoChamp def true? diff --git a/app/models/champs/civilite_champ.rb b/app/models/champs/civilite_champ.rb index cf5316ea0..d9505aee3 100644 --- a/app/models/champs/civilite_champ.rb +++ b/app/models/champs/civilite_champ.rb @@ -13,11 +13,11 @@ # value_json :jsonb # created_at :datetime # updated_at :datetime -# dossier_id :integer +# dossier_id :integer not null # etablissement_id :integer # external_id :string # parent_id :bigint -# type_de_champ_id :integer +# type_de_champ_id :integer not null # class Champs::CiviliteChamp < Champ def html_label? diff --git a/app/models/champs/cnaf_champ.rb b/app/models/champs/cnaf_champ.rb index e8d2d38d6..8e752047e 100644 --- a/app/models/champs/cnaf_champ.rb +++ b/app/models/champs/cnaf_champ.rb @@ -13,11 +13,11 @@ # value_json :jsonb # created_at :datetime # updated_at :datetime -# dossier_id :integer +# dossier_id :integer not null # etablissement_id :integer # external_id :string # parent_id :bigint -# type_de_champ_id :integer +# type_de_champ_id :integer not null # class Champs::CnafChamp < Champs::TextChamp # see https://github.com/betagouv/api-particulier/blob/master/src/presentation/middlewares/cnaf-input-validation.middleware.ts diff --git a/app/models/champs/commune_champ.rb b/app/models/champs/commune_champ.rb index ce2a67cc5..679920781 100644 --- a/app/models/champs/commune_champ.rb +++ b/app/models/champs/commune_champ.rb @@ -13,11 +13,11 @@ # value_json :jsonb # created_at :datetime # updated_at :datetime -# dossier_id :integer +# dossier_id :integer not null # etablissement_id :integer # external_id :string # parent_id :bigint -# type_de_champ_id :integer +# type_de_champ_id :integer not null # class Champs::CommuneChamp < Champs::TextChamp store_accessor :value_json, :departement, :code_departement diff --git a/app/models/champs/date_champ.rb b/app/models/champs/date_champ.rb index db0644ed7..efabab5c1 100644 --- a/app/models/champs/date_champ.rb +++ b/app/models/champs/date_champ.rb @@ -13,11 +13,11 @@ # value_json :jsonb # created_at :datetime # updated_at :datetime -# dossier_id :integer +# dossier_id :integer not null # etablissement_id :integer # external_id :string # parent_id :bigint -# type_de_champ_id :integer +# type_de_champ_id :integer not null # class Champs::DateChamp < Champ before_save :format_before_save diff --git a/app/models/champs/datetime_champ.rb b/app/models/champs/datetime_champ.rb index 8899811b1..cd5617bad 100644 --- a/app/models/champs/datetime_champ.rb +++ b/app/models/champs/datetime_champ.rb @@ -13,11 +13,11 @@ # value_json :jsonb # created_at :datetime # updated_at :datetime -# dossier_id :integer +# dossier_id :integer not null # etablissement_id :integer # external_id :string # parent_id :bigint -# type_de_champ_id :integer +# type_de_champ_id :integer not null # class Champs::DatetimeChamp < Champ before_save :format_before_save diff --git a/app/models/champs/decimal_number_champ.rb b/app/models/champs/decimal_number_champ.rb index 1bc48db23..548e21e1f 100644 --- a/app/models/champs/decimal_number_champ.rb +++ b/app/models/champs/decimal_number_champ.rb @@ -13,11 +13,11 @@ # value_json :jsonb # created_at :datetime # updated_at :datetime -# dossier_id :integer +# dossier_id :integer not null # etablissement_id :integer # external_id :string # parent_id :bigint -# type_de_champ_id :integer +# type_de_champ_id :integer not null # class Champs::DecimalNumberChamp < Champ validates :value, numericality: { diff --git a/app/models/champs/departement_champ.rb b/app/models/champs/departement_champ.rb index b9b68db43..544fbe5ad 100644 --- a/app/models/champs/departement_champ.rb +++ b/app/models/champs/departement_champ.rb @@ -13,11 +13,11 @@ # value_json :jsonb # created_at :datetime # updated_at :datetime -# dossier_id :integer +# dossier_id :integer not null # etablissement_id :integer # external_id :string # parent_id :bigint -# type_de_champ_id :integer +# type_de_champ_id :integer not null # class Champs::DepartementChamp < Champs::TextChamp end diff --git a/app/models/champs/dgfip_champ.rb b/app/models/champs/dgfip_champ.rb index c72b338c8..ad47ad1c0 100644 --- a/app/models/champs/dgfip_champ.rb +++ b/app/models/champs/dgfip_champ.rb @@ -13,11 +13,11 @@ # value_json :jsonb # created_at :datetime # updated_at :datetime -# dossier_id :integer +# dossier_id :integer not null # etablissement_id :integer # external_id :string # parent_id :bigint -# type_de_champ_id :integer +# type_de_champ_id :integer not null # class Champs::DgfipChamp < Champs::TextChamp # see https://github.com/betagouv/api-particulier/blob/master/src/presentation/middlewares/dgfip-input-validation.middleware.ts diff --git a/app/models/champs/dossier_link_champ.rb b/app/models/champs/dossier_link_champ.rb index 55c8763e9..f1423b014 100644 --- a/app/models/champs/dossier_link_champ.rb +++ b/app/models/champs/dossier_link_champ.rb @@ -13,11 +13,11 @@ # value_json :jsonb # created_at :datetime # updated_at :datetime -# dossier_id :integer +# dossier_id :integer not null # etablissement_id :integer # external_id :string # parent_id :bigint -# type_de_champ_id :integer +# type_de_champ_id :integer not null # class Champs::DossierLinkChamp < Champ end diff --git a/app/models/champs/drop_down_list_champ.rb b/app/models/champs/drop_down_list_champ.rb index baad4c3b0..af44735b2 100644 --- a/app/models/champs/drop_down_list_champ.rb +++ b/app/models/champs/drop_down_list_champ.rb @@ -13,11 +13,11 @@ # value_json :jsonb # created_at :datetime # updated_at :datetime -# dossier_id :integer +# dossier_id :integer not null # etablissement_id :integer # external_id :string # parent_id :bigint -# type_de_champ_id :integer +# type_de_champ_id :integer not null # class Champs::DropDownListChamp < Champ THRESHOLD_NB_OPTIONS_AS_RADIO = 5 diff --git a/app/models/champs/email_champ.rb b/app/models/champs/email_champ.rb index acdd6568c..3b4379521 100644 --- a/app/models/champs/email_champ.rb +++ b/app/models/champs/email_champ.rb @@ -13,11 +13,11 @@ # value_json :jsonb # created_at :datetime # updated_at :datetime -# dossier_id :integer +# dossier_id :integer not null # etablissement_id :integer # external_id :string # parent_id :bigint -# type_de_champ_id :integer +# type_de_champ_id :integer not null # class Champs::EmailChamp < Champs::TextChamp end diff --git a/app/models/champs/engagement_champ.rb b/app/models/champs/engagement_champ.rb index bdd6ff0a6..36196a259 100644 --- a/app/models/champs/engagement_champ.rb +++ b/app/models/champs/engagement_champ.rb @@ -13,11 +13,11 @@ # value_json :jsonb # created_at :datetime # updated_at :datetime -# dossier_id :integer +# dossier_id :integer not null # etablissement_id :integer # external_id :string # parent_id :bigint -# type_de_champ_id :integer +# type_de_champ_id :integer not null # class Champs::EngagementChamp < Champs::CheckboxChamp end diff --git a/app/models/champs/explication_champ.rb b/app/models/champs/explication_champ.rb index bac3d0aff..5cee68733 100644 --- a/app/models/champs/explication_champ.rb +++ b/app/models/champs/explication_champ.rb @@ -13,11 +13,11 @@ # value_json :jsonb # created_at :datetime # updated_at :datetime -# dossier_id :integer +# dossier_id :integer not null # etablissement_id :integer # external_id :string # parent_id :bigint -# type_de_champ_id :integer +# type_de_champ_id :integer not null # class Champs::ExplicationChamp < Champs::TextChamp def search_terms diff --git a/app/models/champs/header_section_champ.rb b/app/models/champs/header_section_champ.rb index 2cc24c888..e00cc3643 100644 --- a/app/models/champs/header_section_champ.rb +++ b/app/models/champs/header_section_champ.rb @@ -13,11 +13,11 @@ # value_json :jsonb # created_at :datetime # updated_at :datetime -# dossier_id :integer +# dossier_id :integer not null # etablissement_id :integer # external_id :string # parent_id :bigint -# type_de_champ_id :integer +# type_de_champ_id :integer not null # class Champs::HeaderSectionChamp < Champ def search_terms diff --git a/app/models/champs/iban_champ.rb b/app/models/champs/iban_champ.rb index df94eac66..a4590ac2b 100644 --- a/app/models/champs/iban_champ.rb +++ b/app/models/champs/iban_champ.rb @@ -13,11 +13,11 @@ # value_json :jsonb # created_at :datetime # updated_at :datetime -# dossier_id :integer +# dossier_id :integer not null # etablissement_id :integer # external_id :string # parent_id :bigint -# type_de_champ_id :integer +# type_de_champ_id :integer not null # class Champs::IbanChamp < Champ validates_with IbanValidator diff --git a/app/models/champs/integer_number_champ.rb b/app/models/champs/integer_number_champ.rb index 5187db3d9..220d8d2de 100644 --- a/app/models/champs/integer_number_champ.rb +++ b/app/models/champs/integer_number_champ.rb @@ -13,11 +13,11 @@ # value_json :jsonb # created_at :datetime # updated_at :datetime -# dossier_id :integer +# dossier_id :integer not null # etablissement_id :integer # external_id :string # parent_id :bigint -# type_de_champ_id :integer +# type_de_champ_id :integer not null # class Champs::IntegerNumberChamp < Champ validates :value, numericality: { diff --git a/app/models/champs/linked_drop_down_list_champ.rb b/app/models/champs/linked_drop_down_list_champ.rb index 351ce893a..239119bcd 100644 --- a/app/models/champs/linked_drop_down_list_champ.rb +++ b/app/models/champs/linked_drop_down_list_champ.rb @@ -13,11 +13,11 @@ # value_json :jsonb # created_at :datetime # updated_at :datetime -# dossier_id :integer +# dossier_id :integer not null # etablissement_id :integer # external_id :string # parent_id :bigint -# type_de_champ_id :integer +# type_de_champ_id :integer not null # class Champs::LinkedDropDownListChamp < Champ delegate :primary_options, :secondary_options, to: 'type_de_champ.dynamic_type' diff --git a/app/models/champs/mesri_champ.rb b/app/models/champs/mesri_champ.rb index b61cb0f60..e7f0b59fd 100644 --- a/app/models/champs/mesri_champ.rb +++ b/app/models/champs/mesri_champ.rb @@ -13,11 +13,11 @@ # value_json :jsonb # created_at :datetime # updated_at :datetime -# dossier_id :integer +# dossier_id :integer not null # etablissement_id :integer # external_id :string # parent_id :bigint -# type_de_champ_id :integer +# type_de_champ_id :integer not null # class Champs::MesriChamp < Champs::TextChamp # see https://github.com/betagouv/api-particulier/blob/master/src/presentation/middlewares/mesri-input-validation.middleware.ts diff --git a/app/models/champs/multiple_drop_down_list_champ.rb b/app/models/champs/multiple_drop_down_list_champ.rb index 899dd0159..0601c5b19 100644 --- a/app/models/champs/multiple_drop_down_list_champ.rb +++ b/app/models/champs/multiple_drop_down_list_champ.rb @@ -13,11 +13,11 @@ # value_json :jsonb # created_at :datetime # updated_at :datetime -# dossier_id :integer +# dossier_id :integer not null # etablissement_id :integer # external_id :string # parent_id :bigint -# type_de_champ_id :integer +# type_de_champ_id :integer not null # class Champs::MultipleDropDownListChamp < Champ before_save :format_before_save diff --git a/app/models/champs/number_champ.rb b/app/models/champs/number_champ.rb index d43a6d3df..7e07ec1a2 100644 --- a/app/models/champs/number_champ.rb +++ b/app/models/champs/number_champ.rb @@ -13,11 +13,11 @@ # value_json :jsonb # created_at :datetime # updated_at :datetime -# dossier_id :integer +# dossier_id :integer not null # etablissement_id :integer # external_id :string # parent_id :bigint -# type_de_champ_id :integer +# type_de_champ_id :integer not null # class Champs::NumberChamp < Champ end diff --git a/app/models/champs/pays_champ.rb b/app/models/champs/pays_champ.rb index 2eb3eee76..6da4c169f 100644 --- a/app/models/champs/pays_champ.rb +++ b/app/models/champs/pays_champ.rb @@ -13,11 +13,11 @@ # value_json :jsonb # created_at :datetime # updated_at :datetime -# dossier_id :integer +# dossier_id :integer not null # etablissement_id :integer # external_id :string # parent_id :bigint -# type_de_champ_id :integer +# type_de_champ_id :integer not null # class Champs::PaysChamp < Champs::TextChamp def localized_value diff --git a/app/models/champs/phone_champ.rb b/app/models/champs/phone_champ.rb index ac2c51449..84d2073d7 100644 --- a/app/models/champs/phone_champ.rb +++ b/app/models/champs/phone_champ.rb @@ -13,11 +13,11 @@ # value_json :jsonb # created_at :datetime # updated_at :datetime -# dossier_id :integer +# dossier_id :integer not null # etablissement_id :integer # external_id :string # parent_id :bigint -# type_de_champ_id :integer +# type_de_champ_id :integer not null # class Champs::PhoneChamp < Champs::TextChamp # We want to allow: diff --git a/app/models/champs/piece_justificative_champ.rb b/app/models/champs/piece_justificative_champ.rb index 96923f3c2..8375ef83a 100644 --- a/app/models/champs/piece_justificative_champ.rb +++ b/app/models/champs/piece_justificative_champ.rb @@ -13,11 +13,11 @@ # value_json :jsonb # created_at :datetime # updated_at :datetime -# dossier_id :integer +# dossier_id :integer not null # etablissement_id :integer # external_id :string # parent_id :bigint -# type_de_champ_id :integer +# type_de_champ_id :integer not null # class Champs::PieceJustificativeChamp < Champ FILE_MAX_SIZE = 200.megabytes diff --git a/app/models/champs/pole_emploi_champ.rb b/app/models/champs/pole_emploi_champ.rb index 4bc4124f0..924e8331a 100644 --- a/app/models/champs/pole_emploi_champ.rb +++ b/app/models/champs/pole_emploi_champ.rb @@ -13,11 +13,11 @@ # value_json :jsonb # created_at :datetime # updated_at :datetime -# dossier_id :integer +# dossier_id :integer not null # etablissement_id :integer # external_id :string # parent_id :bigint -# type_de_champ_id :integer +# type_de_champ_id :integer not null # class Champs::PoleEmploiChamp < Champs::TextChamp # see https://github.com/betagouv/api-particulier/blob/master/src/presentation/middlewares/pole-emploi-input-validation.middleware.ts diff --git a/app/models/champs/region_champ.rb b/app/models/champs/region_champ.rb index 5fcbe8934..8615562b0 100644 --- a/app/models/champs/region_champ.rb +++ b/app/models/champs/region_champ.rb @@ -13,11 +13,11 @@ # value_json :jsonb # created_at :datetime # updated_at :datetime -# dossier_id :integer +# dossier_id :integer not null # etablissement_id :integer # external_id :string # parent_id :bigint -# type_de_champ_id :integer +# type_de_champ_id :integer not null # class Champs::RegionChamp < Champs::TextChamp end diff --git a/app/models/champs/repetition_champ.rb b/app/models/champs/repetition_champ.rb index 83d691ffc..efd835575 100644 --- a/app/models/champs/repetition_champ.rb +++ b/app/models/champs/repetition_champ.rb @@ -13,11 +13,11 @@ # value_json :jsonb # created_at :datetime # updated_at :datetime -# dossier_id :integer +# dossier_id :integer not null # etablissement_id :integer # external_id :string # parent_id :bigint -# type_de_champ_id :integer +# type_de_champ_id :integer not null # class Champs::RepetitionChamp < Champ accepts_nested_attributes_for :champs, allow_destroy: true diff --git a/app/models/champs/siret_champ.rb b/app/models/champs/siret_champ.rb index d9c9d9852..3af4bc211 100644 --- a/app/models/champs/siret_champ.rb +++ b/app/models/champs/siret_champ.rb @@ -13,11 +13,11 @@ # value_json :jsonb # created_at :datetime # updated_at :datetime -# dossier_id :integer +# dossier_id :integer not null # etablissement_id :integer # external_id :string # parent_id :bigint -# type_de_champ_id :integer +# type_de_champ_id :integer not null # class Champs::SiretChamp < Champ def search_terms diff --git a/app/models/champs/text_champ.rb b/app/models/champs/text_champ.rb index 9c48ba036..182f7cfa5 100644 --- a/app/models/champs/text_champ.rb +++ b/app/models/champs/text_champ.rb @@ -13,11 +13,11 @@ # value_json :jsonb # created_at :datetime # updated_at :datetime -# dossier_id :integer +# dossier_id :integer not null # etablissement_id :integer # external_id :string # parent_id :bigint -# type_de_champ_id :integer +# type_de_champ_id :integer not null # class Champs::TextChamp < Champ end diff --git a/app/models/champs/textarea_champ.rb b/app/models/champs/textarea_champ.rb index 39570d81a..a11f6f055 100644 --- a/app/models/champs/textarea_champ.rb +++ b/app/models/champs/textarea_champ.rb @@ -13,11 +13,11 @@ # value_json :jsonb # created_at :datetime # updated_at :datetime -# dossier_id :integer +# dossier_id :integer not null # etablissement_id :integer # external_id :string # parent_id :bigint -# type_de_champ_id :integer +# type_de_champ_id :integer not null # class Champs::TextareaChamp < Champs::TextChamp def for_export diff --git a/app/models/champs/titre_identite_champ.rb b/app/models/champs/titre_identite_champ.rb index a89486112..940d6ded5 100644 --- a/app/models/champs/titre_identite_champ.rb +++ b/app/models/champs/titre_identite_champ.rb @@ -13,11 +13,11 @@ # value_json :jsonb # created_at :datetime # updated_at :datetime -# dossier_id :integer +# dossier_id :integer not null # etablissement_id :integer # external_id :string # parent_id :bigint -# type_de_champ_id :integer +# type_de_champ_id :integer not null # class Champs::TitreIdentiteChamp < Champ FILE_MAX_SIZE = 20.megabytes diff --git a/app/models/champs/yes_no_champ.rb b/app/models/champs/yes_no_champ.rb index 293beaba2..f527cad9a 100644 --- a/app/models/champs/yes_no_champ.rb +++ b/app/models/champs/yes_no_champ.rb @@ -13,11 +13,11 @@ # value_json :jsonb # created_at :datetime # updated_at :datetime -# dossier_id :integer +# dossier_id :integer not null # etablissement_id :integer # external_id :string # parent_id :bigint -# type_de_champ_id :integer +# type_de_champ_id :integer not null # class Champs::YesNoChamp < Champ def search_terms diff --git a/db/migrate/20220727084308_add_missing_foreign_keys.rb b/db/migrate/20220727084308_add_missing_foreign_keys.rb new file mode 100644 index 000000000..011bff654 --- /dev/null +++ b/db/migrate/20220727084308_add_missing_foreign_keys.rb @@ -0,0 +1,11 @@ +class AddMissingForeignKeys < ActiveRecord::Migration[6.1] + def change + add_foreign_key :champs, :dossiers, validate: false + add_foreign_key :champs, :types_de_champ, validate: false + add_foreign_key :champs, :etablissements, validate: false + add_foreign_key :etablissements, :dossiers, validate: false + + add_check_constraint :champs, "dossier_id IS NOT NULL", name: "champs_dossier_id_null", validate: false + add_check_constraint :champs, "type_de_champ_id IS NOT NULL", name: "champs_type_de_champ_id_null", validate: false + end +end diff --git a/db/migrate/20220727085155_validate_missing_foreign_keys.rb b/db/migrate/20220727085155_validate_missing_foreign_keys.rb new file mode 100644 index 000000000..2a9ac7767 --- /dev/null +++ b/db/migrate/20220727085155_validate_missing_foreign_keys.rb @@ -0,0 +1,8 @@ +class ValidateMissingForeignKeys < ActiveRecord::Migration[6.1] + def change + validate_foreign_key :champs, :dossiers + validate_foreign_key :champs, :types_de_champ + validate_foreign_key :champs, :etablissements + validate_foreign_key :etablissements, :dossiers + end +end diff --git a/db/migrate/20220727132450_validate_not_null_champs_type_de_champ_id.rb b/db/migrate/20220727132450_validate_not_null_champs_type_de_champ_id.rb new file mode 100644 index 000000000..dad6f2d28 --- /dev/null +++ b/db/migrate/20220727132450_validate_not_null_champs_type_de_champ_id.rb @@ -0,0 +1,7 @@ +class ValidateNotNullChampsTypeDeChampId < ActiveRecord::Migration[6.1] + def change + validate_check_constraint :champs, name: "champs_type_de_champ_id_null" + change_column_null :champs, :type_de_champ_id, false + remove_check_constraint :champs, name: "champs_type_de_champ_id_null" + end +end diff --git a/db/migrate/20220727132456_validate_not_null_champs_dossier_id.rb b/db/migrate/20220727132456_validate_not_null_champs_dossier_id.rb new file mode 100644 index 000000000..6c84dd8ec --- /dev/null +++ b/db/migrate/20220727132456_validate_not_null_champs_dossier_id.rb @@ -0,0 +1,7 @@ +class ValidateNotNullChampsDossierId < ActiveRecord::Migration[6.1] + def change + validate_check_constraint :champs, name: "champs_dossier_id_null" + change_column_null :champs, :dossier_id, false + remove_check_constraint :champs, name: "champs_dossier_id_null" + end +end diff --git a/db/schema.rb b/db/schema.rb index 33115f0cd..80df61961 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_09_02_151920) do +ActiveRecord::Schema.define(version: 2022_09_03_151920) do # These are extensions that must be enabled in order to support this database enable_extension "pgcrypto" @@ -185,7 +185,7 @@ ActiveRecord::Schema.define(version: 2022_09_02_151920) do create_table "champs", id: :serial, force: :cascade do |t| t.datetime "created_at" t.jsonb "data" - t.integer "dossier_id" + t.integer "dossier_id", null: false t.integer "etablissement_id" t.string "external_id" t.string "fetch_external_data_exceptions", array: true @@ -194,7 +194,7 @@ ActiveRecord::Schema.define(version: 2022_09_02_151920) do t.datetime "rebased_at" t.integer "row" t.string "type" - t.integer "type_de_champ_id" + t.integer "type_de_champ_id", null: false t.datetime "updated_at" t.string "value" t.jsonb "value_json" @@ -885,6 +885,9 @@ ActiveRecord::Schema.define(version: 2022_09_02_151920) do add_foreign_key "bulk_messages_groupe_instructeurs", "bulk_messages" add_foreign_key "bulk_messages_groupe_instructeurs", "groupe_instructeurs" add_foreign_key "champs", "champs", column: "parent_id" + add_foreign_key "champs", "dossiers" + add_foreign_key "champs", "etablissements" + add_foreign_key "champs", "types_de_champ" add_foreign_key "closed_mails", "procedures" add_foreign_key "commentaires", "dossiers" add_foreign_key "commentaires", "experts" @@ -894,6 +897,7 @@ ActiveRecord::Schema.define(version: 2022_09_02_151920) do add_foreign_key "dossiers", "groupe_instructeurs" add_foreign_key "dossiers", "procedure_revisions", column: "revision_id" add_foreign_key "dossiers", "users" + add_foreign_key "etablissements", "dossiers" add_foreign_key "experts", "users" add_foreign_key "experts_procedures", "experts" add_foreign_key "experts_procedures", "procedures"