From 9588743ba2814febf31755a7300ef78d8ec74dd3 Mon Sep 17 00:00:00 2001 From: Marius Peter Date: Wed, 12 Nov 2025 18:26:50 +0100 Subject: Replace string query with DSL query. --- models/crop.rkt | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/models/crop.rkt b/models/crop.rkt index 243f783..0dfbbb5 100644 --- a/models/crop.rkt +++ b/models/crop.rkt @@ -49,20 +49,20 @@ (define (get-crop #: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))))) + (define where (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" - "LIMIT 1"))) + [(and id name) + (scalar-expr-qq (and (= id ,id) + (= canonical_name ,name)))] + [id + (scalar-expr-qq (= id ,id))] + [name + (scalar-expr-qq (= canonical_name ,name))])) + (define query (select id canonical_name + #:from crops + #:where (ScalarExpr:AST ,where) + #:order-by id #:asc + #:limit 1)) (match (query-maybe-row (current-conn) query) [(vector id* name*) (crop id* name*)] -- cgit v1.2.3