Measurements and fertilizers can now be persisted 2 ways.

Commit
57933beea0d308588968a6a11ec5a28c0467e224
Author
Marius Peter <dev@marius-peter.com>
Author date
Committer
Marius Peter <dev@marius-peter.com>
Committer date
Changed files
handlers.rkt
index f1825b9b..988789bb 100644..100644
@@ -85,8 +85,10 @@
85 85 (render-page (new-measurement-page)))
86 86
87 87 (define (create-measurement req)
88 Removed: (define-values (measurement-date nutrient-values) (formlet-process (measurements-formlet) req))
89 Removed: (create-nutrient-measurement! measurement-date nutrient-values)
88 Added: (define new-measurement (formlet-process (measurements-formlet) req))
89 Added: (if (get-nutrient-measurement #:date (nutrient-measurement-date new-measurement))
90 Added: (update-nutrient-measurement! new-measurement)
91 Added: (create-nutrient-measurement! new-measurement))
90 92 (redirect-to "/ferti/measurements-and-rotations"))
91 93
92 94 (define (show-measurement _ id)
@@ -124,8 +126,8 @@
124 126 (render-page (new-fertilizer-page)))
125 127
126 128 (define (create-fertilizer req)
127 Removed: (define new-fertilizer-product (formlet-process (fertilizer-formlet) req))
128 Removed: (create-fertilizer-product! new-fertilizer-product)
129 Added: (define new-fertilizer (formlet-process (fertilizer-formlet) req))
130 Added: (create-fertilizer-product! new-fertilizer)
129 131 (redirect-to "/ferti/fertilizers"))
130 132
131 133 (define (show-fertilizer _ id)
models/fertilizer-product.rkt
index e79a7072..652b3c42 100644..100644
@@ -7,7 +7,9 @@
7 7 (rename-out [fertilizer-product-canonical-name fertilizer-product-name]
8 8 [fertilizer-product-nutrient-values fertilizer-product-values]
9 9 [fertilizer-product-brand-name fertilizer-brand-name])
10 Removed: (contract-out [create-fertilizer-product! (-> fertilizer-product? fertilizer-product?)]
10 Added: (contract-out [create-fertilizer-product!
11 Added: (case-> (-> fertilizer-product? fertilizer-product?)
12 Added: (-> string? string? nutrient-value-hash/c fertilizer-product?))]
11 13 [get-fertilizer-products (-> (listof fertilizer-product?))]
12 14 [get-fertilizer-product
13 15 (->* () (#:id db-id? #:canonical-name string?) (or/c fertilizer-product? #f))]
@@ -56,7 +58,14 @@
56 58
57 59 ;; CREATE
58 60
59 Removed: (define (create-fertilizer-product! fp)
61 Added: (define create-fertilizer-product!
62 Added: (case-lambda
63 Added: [(fp) (create-fertilizer-product!/fp fp)]
64 Added: [(canonical-name brand-name nutrient-values)
65 Added: (create-fertilizer-product!/fp
66 Added: (fertilizer-product #f canonical-name brand-name nutrient-values))]))
67 Added:
68 Added: (define (create-fertilizer-product!/fp fp)
60 69 (define canonical-name (fertilizer-product-canonical-name fp))
61 70 (define brand-name (fertilizer-product-brand-name fp))
62 71 (define nutrient-values (fertilizer-product-nutrient-values fp))
@@ -196,10 +205,9 @@
196 205 (define nitrogen (get-nutrient #:name "Nitrogen"))
197 206 (define phosphorus (get-nutrient #:name "Phosphorus"))
198 207
199 Removed: (create-fertilizer-product! (fertilizer-product #f
200 Removed: canonical-product-name
201 Removed: "MasterBlend"
202 Removed: (hash nitrogen 40 phosphorus 200)))
208 Added: (create-fertilizer-product! canonical-product-name
209 Added: "MasterBlend"
210 Added: (hash nitrogen 40 phosphorus 200))
203 211
204 212 (check-equal? (length (get-fertilizer-products)) 1)
205 213
@@ -238,9 +246,7 @@
238 246
239 247 (test-case "Custom write property formatting"
240 248 (define nitrogen (get-nutrient #:name "Nitrogen"))
241 Removed: (define fp
242 Removed: (create-fertilizer-product!
243 Removed: (fertilizer-product #f "Test Fertilizer" "TestBrand" (hash nitrogen 50))))
249 Added: (define fp (create-fertilizer-product! "Test Fertilizer" "TestBrand" (hash nitrogen 50)))
244 250
245 251 (define output (open-output-string))
246 252 (write fp output)
models/nutrient-measurement.rkt
index f4bfa8e4..fea7b89e 100644..100644
@@ -7,7 +7,9 @@
7 7 (rename-out [nutrient-measurement-measurement-date nutrient-measurement-date]
8 8 [nutrient-measurement-nutrient-values nutrient-measurement-values])
9 9 (contract-out
10 Removed: [create-nutrient-measurement! (-> string? nutrient-value-hash/c nutrient-measurement?)]
10 Added: [create-nutrient-measurement!
11 Added: (case-> (-> nutrient-measurement? nutrient-measurement?)
12 Added: (-> string? nutrient-value-hash/c nutrient-measurement?))]
11 13 [get-nutrient-measurements (-> (listof nutrient-measurement?))]
12 14 [get-nutrient-measurement
13 15 (->* () (#:id db-id? #:date string?) (or/c nutrient-measurement? #f))]
@@ -51,7 +53,15 @@
51 53
52 54 ;; CREATE
53 55
54 Removed: (define (create-nutrient-measurement! measurement-date nutrient-values)
56 Added: (define create-nutrient-measurement!
57 Added: (case-lambda
58 Added: [(nm) (create-nutrient-measurement!/nm nm)]
59 Added: [(measurement-date nutrient-values)
60 Added: (create-nutrient-measurement!/nm (nutrient-measurement #f measurement-date nutrient-values))]))
61 Added:
62 Added: (define (create-nutrient-measurement!/nm nm)
63 Added: (define measurement-date (nutrient-measurement-measurement-date nm))
64 Added: (define nutrient-values (nutrient-measurement-nutrient-values nm))
55 65 (with-tx (define nm-id
56 66 (insert-id (query (current-conn)
57 67 (insert #:into nutrient_measurements