From fddbcb3923d3dd019d07b3f37c033fab36c2cadc Mon Sep 17 00:00:00 2001 From: Marius Peter Date: Mon, 20 Oct 2025 20:41:07 +0200 Subject: Simplify get-* model accessors. --- models/crop.rkt | 27 ++++++--------------------- 1 file changed, 6 insertions(+), 21 deletions(-) (limited to 'models/crop.rkt') diff --git a/models/crop.rkt b/models/crop.rkt index 7163cbd..f77cbaa 100644 --- a/models/crop.rkt +++ b/models/crop.rkt @@ -8,10 +8,7 @@ ;; SQL CRUD (contract-out [create-crop! (-> string? void?)] - [get-crops (->* () - (#:id (or/c #f exact-nonnegative-integer?) - #:name (or/c #f string?)) - (listof crop?))] + [get-crops (-> (listof crop?))] [get-crop (->* () (#:id (or/c #f exact-nonnegative-integer?) #:name (or/c #f string?)) @@ -39,24 +36,12 @@ ;; READ -(define (get-crops #:id [id #f] - #:name [name #f]) - (define (where-expr) - (define clauses - (filter values - (list - (and id (format "id = ~e" id)) - (and name (format "canonical_name = ~e" name))))) - (cond - [(null? clauses) ""] - [else (format "WHERE ~a" (string-join clauses " AND "))])) - (define query (string-join - `("SELECT id, canonical_name" - "FROM crops" - ,(where-expr) - "ORDER BY id ASC"))) +(define (get-crops) (for/list ([(id* name*) - (in-query (current-conn) query)]) + (in-query (current-conn) + (select id canonical_name + #:from crops + #:order-by id #:asc))]) (crop id* name*))) (define (get-crop #:id [id #f] -- cgit v1.2.3