summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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