From 70ae2a00292e7e2cfc8530a3301e3f5b0654f5f2 Mon Sep 17 00:00:00 2001 From: Marius Peter Date: Sun, 19 Oct 2025 21:27:58 +0200 Subject: Simplify retrieval of all nutrient measurements and targets. --- models/nutrient-measurement.rkt | 28 ++++++++-------------------- 1 file changed, 8 insertions(+), 20 deletions(-) (limited to 'models/nutrient-measurement.rkt') diff --git a/models/nutrient-measurement.rkt b/models/nutrient-measurement.rkt index 8364aa7..28e3bdc 100644 --- a/models/nutrient-measurement.rkt +++ b/models/nutrient-measurement.rkt @@ -12,10 +12,8 @@ nutrient? number?)) nutrient-measurement?)] - [get-nutrient-measurements (->* () - (#:id (or/c #f exact-nonnegative-integer?) - #:measured-on (or/c #f string?)) - (listof nutrient-measurement?))] + [get-nutrient-measurements (-> void? + (listof nutrient-measurement?))] [get-nutrient-measurement (->* () (#:id (or/c #f exact-nonnegative-integer?) #:measured-on (or/c #f string?)) @@ -80,23 +78,13 @@ ;; READ -(define (get-nutrient-measurements #:id [id #f] - #:measured-on [measured-on #f]) - (define (where-expr) - (define clauses - (filter values - (list (and id (format "id = ~e" id)) - (and measured-on (format "measured_on = ~e" measured-on))))) - (cond - [(null? clauses) ""] - [else (format "WHERE ~a" (string-join clauses " AND "))])) - (define query (string-join - `("SELECT id, measured_on" - "FROM nutrient_measurements" - ,(where-expr) - "ORDER BY id ASC"))) +(define (get-nutrient-measurements) (for/list ([(id* measured-on*) - (in-query (current-conn) query)]) + (in-query (current-conn) + (string-join + `("SELECT id, measured_on" + "FROM nutrient_measurements" + "ORDER BY id ASC")))]) (nutrient-measurement id* measured-on*))) (define (get-nutrient-measurement #:id [id #f] -- cgit v1.2.3