[Racket] Ferti hydroponic nutrient solver, redux.
Fix crop update logic.
models/crop.rkt
@@ -7,7 +7,7 @@
7
7
(contract-out [create-crop! (-> crop? crop?)]
8
8
[get-crops (-> (listof crop?))]
9
9
[get-crop (->* () (#:id db-id? #:name string?) (or/c crop? #f))]
10
Removed:
[update-crop! (->* (db-id?) (#:name string?) (or/c crop? #f))]
10
Added:
[update-crop! (-> crop? void?)]
11
11
[delete-crop! (-> db-id? void?)]))
12
12
13
13
(require db
@@ -52,11 +52,10 @@
52
52
53
53
;; UPDATE
54
54
55
Removed:
(define (update-crop! id #:name [name #f])
56
Removed:
(cond
57
Removed:
[name (query-exec (current-conn) (update crops #:set [canonical_name ,name] #:where (= id ,id)))]
58
Removed:
[else (void)])
59
Removed:
(or (get-crop #:id id) (error 'update-crop! "No crop with id ~a" id)))
55
Added:
(define (update-crop! c)
56
Added:
(define id (or (crop-id c) (raise-argument-error 'update-crop! "db-id?" (crop-id c))))
57
Added:
(with-tx (query-exec (current-conn)
58
Added:
(update crops #:set [canonical_name ,(crop-name c)] #:where [= id ,id]))))
60
59
61
60
;; DELETE
62
61