[Racket] Ferti hydroponic nutrient solver, redux.
Realign nutrient-target model with nutrient-measurement.
models/nutrient-target.rkt
@@ -20,7 +20,7 @@
20
20
(or/c nutrient-target? #f))]
21
21
[get-nutrient-target-values (-> nutrient-target? (listof (cons/c nutrient? number?)))]
22
22
[get-nutrient-target-value (-> nutrient-target? nutrient? number?)]
23
Removed:
;; Before the first target is createed, the "latest" value is basically false.
23
Added:
;; The "latest" value is false before the first target is created.
24
24
[get-latest-nutrient-target-value (-> nutrient? (or/c number? #f))]
25
25
[delete-nutrient-target! (-> nutrient-target? void?)]))
26
26
@@ -144,38 +144,25 @@
144
144
(define (get-nutrient-target-values nutrient-target)
145
145
(for/list ([(nutrient-id name formula value_ppm)
146
146
(in-query (current-conn)
147
Removed:
(string-join
148
Removed:
'("SELECT n.id, n.canonical_name, n.formula, nv.value_ppm"
149
Removed:
"FROM nutrient_values nv"
150
Removed:
"JOIN nutrient_value_sets nvs ON nvs.id = nv.value_set_id"
151
Removed:
"JOIN nutrient_targets nm ON nm.id = nvs.nutrient_target_id"
152
Removed:
"JOIN nutrients n ON n.id = nv.nutrient_id"
153
Removed:
"WHERE nm.id = $1"))
154
Removed:
(nutrient-target-id nutrient-target))])
147
Added:
(select n.id n.canonical_name n.formula nv.value_ppm
148
Added:
#:from (TableExpr:AST ,joined)
149
Added:
#:where (= nm.id ,(nutrient-target-id nutrient-target))))])
155
150
(cons (nutrient nutrient-id name formula) value_ppm)))
156
151
157
152
(define (get-nutrient-target-value nutrient-target nutrient)
158
153
(query-maybe-value (current-conn)
159
Removed:
(string-join
160
Removed:
'("SELECT value_ppm"
161
Removed:
"FROM nutrient_values nv"
162
Removed:
"JOIN nutrient_value_sets nvs ON nvs.id = nv.value_set_id"
163
Removed:
"JOIN nutrient_targets nm ON nm.id = nvs.nutrient_target_id"
164
Removed:
"WHERE nm.id = $1 AND nv.nutrient_id = $2"))
165
Removed:
(nutrient-target-id nutrient-target)
166
Removed:
(nutrient-id nutrient)))
154
Added:
(select value_ppm
155
Added:
#:from (TableExpr:AST ,joined)
156
Added:
#:where (and (= nm.id ,(nutrient-target-id nutrient-target))
157
Added:
(= nv.nutrient_id ,(nutrient-id nutrient))))))
167
158
168
159
(define (get-latest-nutrient-target-value nutrient)
169
160
(query-maybe-value (current-conn)
170
Removed:
(string-join
171
Removed:
'("SELECT value_ppm"
172
Removed:
"FROM nutrient_values nv"
173
Removed:
"JOIN nutrient_value_sets nvs ON nvs.id = nv.value_set_id"
174
Removed:
"JOIN nutrient_targets nm ON nm.id = nvs.nutrient_target_id"
175
Removed:
"WHERE nv.nutrient_id = $1"
176
Removed:
"ORDER BY nm.effective_on DESC"
177
Removed:
"LIMIT 1"))
178
Removed:
(nutrient-id nutrient)))
161
Added:
(select value_ppm
162
Added:
#:from (TableExpr:AST ,joined)
163
Added:
#:where (= nv.nutrient_id ,(nutrient-id nutrient))
164
Added:
#:order-by nm.effective_on #:desc
165
Added:
#:limit 1)))
179
166
180
167
181
168
;; UPDATE