diff options
Diffstat (limited to 'models/crop.rkt')
| -rw-r--r-- | models/crop.rkt | 27 | 
1 files changed, 6 insertions, 21 deletions
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]  |