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 ++++++++-------------------- models/nutrient-target.rkt | 30 ++++++++---------------------- 2 files changed, 16 insertions(+), 42 deletions(-) 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] diff --git a/models/nutrient-target.rkt b/models/nutrient-target.rkt index 6483997..e9c168e 100644 --- a/models/nutrient-target.rkt +++ b/models/nutrient-target.rkt @@ -12,12 +12,8 @@ nutrient? number?)) nutrient-target?)] - [get-nutrient-targets (->* () - (#:id - (or/c #f exact-nonnegative-integer?) - #:effective-on - (or/c #f string?)) - (listof nutrient-target?))] + [get-nutrient-targets (-> void? + (listof nutrient-target?))] [get-nutrient-target (->* () (#:id (or/c #f exact-nonnegative-integer?) @@ -85,23 +81,13 @@ ;; READ -(define (get-nutrient-targets #:id [id #f] - #:effective-on [effective-on #f]) - (define (where-expr) - (define clauses - (filter values - (list (and id (format "id = ~e" id)) - (and effective-on (format "effective_on = ~e" effective-on))))) - (cond - [(null? clauses) ""] - [else (format "WHERE ~a" (string-join clauses " AND "))])) - (define query (string-join - `("SELECT id, effective_on" - "FROM nutrient_targets" - ,(where-expr) - "ORDER BY id ASC"))) +(define (get-nutrient-targets) (for/list ([(id* effective-on*) - (in-query (current-conn) query)]) + (in-query (current-conn) + (string-join + `("SELECT id, effective_on" + "FROM nutrient_targets" + "ORDER BY id ASC")))]) (nutrient-target id* effective-on*))) (define (get-nutrient-target #:id [id #f] -- cgit v1.2.3