summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--models/nutrient-measurement.rkt51
1 files changed, 26 insertions, 25 deletions
diff --git a/models/nutrient-measurement.rkt b/models/nutrient-measurement.rkt
index 7ccc7f3..3b997c8 100644
--- a/models/nutrient-measurement.rkt
+++ b/models/nutrient-measurement.rkt
@@ -37,31 +37,32 @@
;; CREATE
(define (create-nutrient-measurement! measured-on nutrient-values)
- (with-tx
- (query-exec (current-conn)
- (insert #:into nutrient_measurements
- #:set [measured_on ,measured-on]))
- (define nm-id (query-value (current-conn)
- (select id
- #:from nutrient_measurements
- #:where (= measured_on ,measured-on))))
- (query-exec (current-conn)
- (insert #:into nutrient_value_sets
- #:set [nutrient_measurement_id ,nm-id]))
- (define nvs-id (query-value (current-conn)
- (select id
- #: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]))]))
- (get-nutrient-measurement #:measured-on measured-on)))
+ (or (get-nutrient-measurement #:measured-on measured-on)
+ (with-tx
+ (query-exec (current-conn)
+ (insert #:into nutrient_measurements
+ #:set [measured_on ,measured-on]))
+ (define nm-id (query-value (current-conn)
+ (select id
+ #:from nutrient_measurements
+ #:where (= measured_on ,measured-on))))
+ (query-exec (current-conn)
+ (insert #:into nutrient_value_sets
+ #:set [nutrient_measurement_id ,nm-id]))
+ (define nvs-id (query-value (current-conn)
+ (select id
+ #: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]))]))
+ (get-nutrient-measurement #:measured-on measured-on))))
;; READ
Copyright 2019--2025 Marius PETER