diff options
| author | Marius Peter <dev@marius-peter.com> | 2025-10-20 20:30:42 +0200 |
|---|---|---|
| committer | Marius Peter <dev@marius-peter.com> | 2025-10-20 20:30:42 +0200 |
| commit | 9620cae7bba35503a2ea4679938f76749a34245a (patch) | |
| tree | 09ff192e6e6288297d5d07fb8792e2121a65f265 | |
| parent | f7524a2c8fa145fe4515c8e59c99b3d252f1be87 (diff) | |
Add uniqueness and coherency checks for nutrient value sets.
| -rw-r--r-- | db/migrations.rkt | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/db/migrations.rkt b/db/migrations.rkt index deda1ac..e0a1ef2 100644 --- a/db/migrations.rkt +++ b/db/migrations.rkt @@ -67,7 +67,27 @@ #:on-delete #:cascade) (foreign-key fertilizer_product_id #:references (fertilizer_products id) - #:on-delete #:cascade)) + #:on-delete #:cascade) + (unique nutrient_measurement_id) + (unique nutrient_target_id) + (unique crop_requirement_id) + (unique fertilizer_product_id) + (check (or (and (is-not-null nutrient_measurement_id) + (is-null nutrient_target_id) + (is-null crop_requirement_id) + (is-null fertilizer_product_id)) + (and (is-null nutrient_measurement_id) + (is-not-null nutrient_target_id) + (is-null crop_requirement_id) + (is-null fertilizer_product_id)) + (and (is-null nutrient_measurement_id) + (is-null nutrient_target_id) + (is-not-null crop_requirement_id) + (is-null fertilizer_product_id)) + (and (is-null nutrient_measurement_id) + (is-null nutrient_target_id) + (is-null crop_requirement_id) + (is-not-null fertilizer_product_id))))) "CREATE INDEX IF NOT EXISTS idx_nvs_meas ON nutrient_value_sets(nutrient_measurement_id)" "CREATE INDEX IF NOT EXISTS idx_nvs_targ ON nutrient_value_sets(nutrient_target_id)" "CREATE INDEX IF NOT EXISTS idx_nvs_crop ON nutrient_value_sets(crop_requirement_id)" |