diff options
| author | Marius Peter <dev@marius-peter.com> | 2025-11-12 18:26:50 +0100 |
|---|---|---|
| committer | Marius Peter <dev@marius-peter.com> | 2025-11-12 18:26:50 +0100 |
| commit | 9588743ba2814febf31755a7300ef78d8ec74dd3 (patch) | |
| tree | 0a19d28fb5f8d0c94e87bf0d93dc876df9479d8a /models/crop.rkt | |
| parent | 84e25e73e5e435b869704cd1c3a91471d0a52f05 (diff) | |
Replace string query with DSL query.
Diffstat (limited to 'models/crop.rkt')
| -rw-r--r-- | models/crop.rkt | 26 |
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*)] |