From 9620cae7bba35503a2ea4679938f76749a34245a Mon Sep 17 00:00:00 2001 From: Marius Peter Date: Mon, 20 Oct 2025 20:30:42 +0200 Subject: Add uniqueness and coherency checks for nutrient value sets. --- db/migrations.rkt | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) 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)" -- cgit v1.2.3