summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarius Peter <dev@marius-peter.com>2025-10-20 20:30:42 +0200
committerMarius Peter <dev@marius-peter.com>2025-10-20 20:30:42 +0200
commit9620cae7bba35503a2ea4679938f76749a34245a (patch)
tree09ff192e6e6288297d5d07fb8792e2121a65f265
parentf7524a2c8fa145fe4515c8e59c99b3d252f1be87 (diff)
Add uniqueness and coherency checks for nutrient value sets.
-rw-r--r--db/migrations.rkt22
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)"
Copyright 2019--2025 Marius PETER