summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--models/crop-requirement.rkt54
-rw-r--r--models/fertilizer-product.rkt17
-rw-r--r--models/nutrient-measurement.rkt15
-rw-r--r--models/nutrient-target.rkt15
4 files changed, 47 insertions, 54 deletions
diff --git a/models/crop-requirement.rkt b/models/crop-requirement.rkt
index e668c40..4faa6bb 100644
--- a/models/crop-requirement.rkt
+++ b/models/crop-requirement.rkt
@@ -35,35 +35,31 @@
;; CREATE
(define (create-crop-requirement! profile nutrient-values [crop #f])
- (define existing-crop-requirement (get-crop-requirement #:profile profile))
- (define (new-crop-requirement)
- (with-tx
- (query-exec (current-conn)
- (if crop
- (insert #:into crop_requirements
- #:set [crop_id ,(crop-id crop)] [profile ,profile])
- (insert #:into crop_requirements
- #:set [profile ,profile])))
- (define cr-id (crop-requirement-id (get-crop-requirement #:profile profile)))
- (query-exec (current-conn)
- (insert #:into nutrient_value_sets
- #:set [crop_requirement_id ,cr-id]))
- (define nvs-id (query-value (current-conn)
- (select id
- #:from nutrient_value_sets
- #:where (= crop_requirement_id ,cr-id))))
- (for ([nv nutrient-values])
- (match nv
- [(cons n v)
- (query-exec (current-conn)
- (insert #:into nutrient_values
- #:set
- [value_set_id ,nvs-id]
- [nutrient_id ,(nutrient-id n)]
- [value_ppm ,v]))])))
- (get-crop-requirement #:profile profile))
- (or existing-crop-requirement
- (new-crop-requirement)))
+ (or (get-crop-requirement #:profile profile)
+ (with-tx
+ (query-exec (current-conn)
+ (if crop
+ (insert #:into crop_requirements
+ #:set [crop_id ,(crop-id crop)] [profile ,profile])
+ (insert #:into crop_requirements
+ #:set [profile ,profile])))
+ (define cr-id (crop-requirement-id (get-crop-requirement #:profile profile)))
+ (query-exec (current-conn)
+ (insert #:into nutrient_value_sets
+ #:set [crop_requirement_id ,cr-id]))
+ (define nvs-id (query-value (current-conn)
+ (select id
+ #:from nutrient_value_sets
+ #:where (= crop_requirement_id ,cr-id))))
+ (for ([nv nutrient-values])
+ (match-define (cons n v) nv)
+ (query-exec (current-conn)
+ (insert #:into nutrient_values
+ #:set
+ [value_set_id ,nvs-id]
+ [nutrient_id ,(nutrient-id n)]
+ [value_ppm ,v])))
+ (get-crop-requirement #:profile profile))))
;; READ
diff --git a/models/fertilizer-product.rkt b/models/fertilizer-product.rkt
index 9859537..409d746 100644
--- a/models/fertilizer-product.rkt
+++ b/models/fertilizer-product.rkt
@@ -53,15 +53,14 @@
#:from nutrient_value_sets
#:where (= fertilizer_product_id ,fp-id))))
(for ([nv nutrient-values])
- (match nv
- [(cons n v)
- (query-exec (current-conn)
- (insert #:into nutrient_values
- #:set
- [value_set_id ,nvs-id]
- [nutrient_id ,(nutrient-id n)]
- [value_ppm ,v]))])))
- (get-fertilizer-product #:canonical-name canonical-name)))
+ (match-define (cons n v) nv)
+ (query-exec (current-conn)
+ (insert #:into nutrient_values
+ #:set
+ [value_set_id ,nvs-id]
+ [nutrient_id ,(nutrient-id n)]
+ [value_ppm ,v])))
+ (get-fertilizer-product #:canonical-name canonical-name))))
;; READ
diff --git a/models/nutrient-measurement.rkt b/models/nutrient-measurement.rkt
index 523888b..23ee9e3 100644
--- a/models/nutrient-measurement.rkt
+++ b/models/nutrient-measurement.rkt
@@ -54,14 +54,13 @@
#:from nutrient_value_sets
#:where (= nutrient_measurement_id ,nm-id))))
(for ([nv nutrient-values])
- (match nv
- [(cons n v)
- (query-exec (current-conn)
- (insert #:into nutrient_values
- #:set
- [value_set_id ,nvs-id]
- [nutrient_id ,(nutrient-id n)]
- [value_ppm ,v]))]))
+ (match-define (cons n v) nv)
+ (query-exec (current-conn)
+ (insert #:into nutrient_values
+ #:set
+ [value_set_id ,nvs-id]
+ [nutrient_id ,(nutrient-id n)]
+ [value_ppm ,v])))
(get-nutrient-measurement #:measured-on measured-on))))
diff --git a/models/nutrient-target.rkt b/models/nutrient-target.rkt
index 6f25564..7ae9003 100644
--- a/models/nutrient-target.rkt
+++ b/models/nutrient-target.rkt
@@ -54,14 +54,13 @@
#:from nutrient_value_sets
#:where (= nutrient_target_id ,nt-id))))
(for ([nv nutrient-values])
- (match nv
- [(cons n v)
- (query-exec (current-conn)
- (insert #:into nutrient_values
- #:set
- [value_set_id ,nvs-id]
- [nutrient_id ,(nutrient-id n)]
- [value_ppm ,v]))]))
+ (match-define (cons n v) nv)
+ (query-exec (current-conn)
+ (insert #:into nutrient_values
+ #:set
+ [value_set_id ,nvs-id]
+ [nutrient_id ,(nutrient-id n)]
+ [value_ppm ,v])))
(get-nutrient-target #:effective-on effective-on))))
Copyright 2019--2025 Marius PETER