Enforce creation idempotency at the model level.

Commit
d7a96109d779acd25259d966ccfda05b5a154815
Author
Marius Peter <dev@marius-peter.com>
Author date
Committer
Marius Peter <dev@marius-peter.com>
Committer date
models/nutrient-measurement.rkt
index 7ccc7f39..3b997c8b 100644..100644
@@ -37,31 +37,32 @@
37 37 ;; CREATE
38 38
39 39 (define (create-nutrient-measurement! measured-on nutrient-values)
40 Removed: (with-tx
41 Removed: (query-exec (current-conn)
42 Removed: (insert #:into nutrient_measurements
43 Removed: #:set [measured_on ,measured-on]))
44 Removed: (define nm-id (query-value (current-conn)
45 Removed: (select id
46 Removed: #:from nutrient_measurements
47 Removed: #:where (= measured_on ,measured-on))))
48 Removed: (query-exec (current-conn)
49 Removed: (insert #:into nutrient_value_sets
50 Removed: #:set [nutrient_measurement_id ,nm-id]))
51 Removed: (define nvs-id (query-value (current-conn)
52 Removed: (select id
53 Removed: #:from nutrient_value_sets
54 Removed: #:where (= nutrient_measurement_id ,nm-id))))
55 Removed: (for ([nv nutrient-values])
56 Removed: (match nv
57 Removed: [(cons n v)
58 Removed: (query-exec (current-conn)
59 Removed: (insert #:into nutrient_values
60 Removed: #:set
61 Removed: [value_set_id ,nvs-id]
62 Removed: [nutrient_id ,(nutrient-id n)]
63 Removed: [value_ppm ,v]))]))
64 Removed: (get-nutrient-measurement #:measured-on measured-on)))
40 Added: (or (get-nutrient-measurement #:measured-on measured-on)
41 Added: (with-tx
42 Added: (query-exec (current-conn)
43 Added: (insert #:into nutrient_measurements
44 Added: #:set [measured_on ,measured-on]))
45 Added: (define nm-id (query-value (current-conn)
46 Added: (select id
47 Added: #:from nutrient_measurements
48 Added: #:where (= measured_on ,measured-on))))
49 Added: (query-exec (current-conn)
50 Added: (insert #:into nutrient_value_sets
51 Added: #:set [nutrient_measurement_id ,nm-id]))
52 Added: (define nvs-id (query-value (current-conn)
53 Added: (select id
54 Added: #:from nutrient_value_sets
55 Added: #:where (= nutrient_measurement_id ,nm-id))))
56 Added: (for ([nv nutrient-values])
57 Added: (match nv
58 Added: [(cons n v)
59 Added: (query-exec (current-conn)
60 Added: (insert #:into nutrient_values
61 Added: #:set
62 Added: [value_set_id ,nvs-id]
63 Added: [nutrient_id ,(nutrient-id n)]
64 Added: [value_ppm ,v]))]))
65 Added: (get-nutrient-measurement #:measured-on measured-on))))
65 66
66 67
67 68 ;; READ