From a23660b2edb802bdf0fcc65a40d3294fc235cb4e Mon Sep 17 00:00:00 2001 From: Marius Peter Date: Sat, 6 Dec 2025 18:11:22 +0100 Subject: Update model entity persistency (creation) logic. This greatly reduces the amount of SQL INSERT queries. --- models/nutrient-measurement.rkt | 31 ++++++++++--------------------- 1 file changed, 10 insertions(+), 21 deletions(-) (limited to 'models/nutrient-measurement.rkt') 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 -- cgit v1.2.3