summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarius Peter <dev@marius-peter.com>2025-11-12 18:26:50 +0100
committerMarius Peter <dev@marius-peter.com>2025-11-12 18:26:50 +0100
commit9588743ba2814febf31755a7300ef78d8ec74dd3 (patch)
tree0a19d28fb5f8d0c94e87bf0d93dc876df9479d8a
parent84e25e73e5e435b869704cd1c3a91471d0a52f05 (diff)
Replace string query with DSL query.
-rw-r--r--models/crop.rkt26
1 files 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*)]
Copyright 2019--2026 Marius PETER