diff options
| author | Marius Peter <dev@marius-peter.com> | 2025-12-06 18:11:22 +0100 |
|---|---|---|
| committer | Marius Peter <dev@marius-peter.com> | 2025-12-06 18:11:22 +0100 |
| commit | a23660b2edb802bdf0fcc65a40d3294fc235cb4e (patch) | |
| tree | beba9fa822c904caf358b08b9981f1c00ebe5f8e /models/nutrient-measurement.rkt | |
| parent | c3557a7d5f54d7a9cb7fb2ece9487332c264236e (diff) | |
Update model entity persistency (creation) logic.
This greatly reduces the amount of SQL INSERT queries.
Diffstat (limited to 'models/nutrient-measurement.rkt')
| -rw-r--r-- | models/nutrient-measurement.rkt | 31 |
1 files changed, 10 insertions, 21 deletions
diff --git a/models/nutrient-measurement.rkt b/models/nutrient-measurement.rkt index 88177da..a9904d7 100644 --- a/models/nutrient-measurement.rkt +++ b/models/nutrient-measurement.rkt @@ -50,27 +50,16 @@ ;; CREATE (define (create-nutrient-measurement! measurement-date nutrient-values) - (or - (get-nutrient-measurement #:date measurement-date) - (with-tx - (query-exec (current-conn) - (insert #:into nutrient_measurements #:set [measurement_date ,measurement-date])) - (define nm-id - (query-value - (current-conn) - (select id #:from nutrient_measurements #:where (= measurement_date ,measurement-date)))) - (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 ([(n v) (in-hash nutrient-values)]) - (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 #:date measurement-date)))) + (with-tx (define nm-id + (insert-id (query (current-conn) + (insert #:into nutrient_measurements + #:set [measurement_date ,measurement-date])))) + (define nvs-id + (insert-id (query (current-conn) + (insert #:into nutrient_value_sets + #:set [nutrient_measurement_id ,nm-id])))) + (insert-nutrient-values (current-conn) nvs-id nutrient-values) + (nutrient-measurement nm-id measurement-date nutrient-values))) ;; READ |