[Racket] Ferti hydroponic nutrient solver, redux.
Simplify get-* model accessors.
Changed files
models/crop-requirement.rkt
@@ -13,12 +13,7 @@
13
13
number?)))
14
14
((or/c #f crop?))
15
15
crop-requirement?)]
16
Removed:
[get-crop-requirements (->* ()
17
Removed:
(#:id
18
Removed:
(or/c #f exact-nonnegative-integer?)
19
Removed:
#:profile
20
Removed:
(or/c #f string?))
21
Removed:
(listof crop-requirement?))]
16
Added:
[get-crop-requirements (-> (listof crop-requirement?))]
22
17
[get-crop-requirement (->* ()
23
18
(#:id
24
19
(or/c #f exact-nonnegative-integer?)
@@ -90,27 +85,16 @@
90
85
91
86
;; READ
92
87
93
Removed:
(define (get-crop-requirements #:id [id #f]
94
Removed:
#:profile [profile #f])
95
Removed:
(define (where-expr)
96
Removed:
(define clauses
97
Removed:
(filter values
98
Removed:
(list (and id (format "id = ~e" id))
99
Removed:
(and profile (format "profile = ~e" profile)))))
100
Removed:
(cond
101
Removed:
[(null? clauses) ""]
102
Removed:
[else (format "WHERE ~a" (string-join clauses " AND "))]))
103
Removed:
(define query (string-join
104
Removed:
`("SELECT id, profile"
105
Removed:
"FROM crop_requirements"
106
Removed:
,(where-expr)
107
Removed:
"ORDER BY id ASC")))
88
Added:
(define (get-crop-requirements)
108
89
(for/list ([(id* profile*)
109
Removed:
(in-query (current-conn) query)])
90
Added:
(in-query (current-conn)
91
Added:
(select id profile
92
Added:
#:from crop_requirements
93
Added:
#:order-by id #:asc))])
110
94
(crop-requirement id* profile*)))
111
95
112
96
(define (get-crop-requirement #:id [id #f]
113
Removed:
#:profile [profile #f])
97
Added:
#:profile [profile #f])
114
98
(define (where-expr)
115
99
(define clauses
116
100
(filter values
models/crop.rkt
@@ -8,10 +8,7 @@
8
8
;; SQL CRUD
9
9
(contract-out
10
10
[create-crop! (-> string? void?)]
11
Removed:
[get-crops (->* ()
12
Removed:
(#:id (or/c #f exact-nonnegative-integer?)
13
Removed:
#:name (or/c #f string?))
14
Removed:
(listof crop?))]
11
Added:
[get-crops (-> (listof crop?))]
15
12
[get-crop (->* ()
16
13
(#:id (or/c #f exact-nonnegative-integer?)
17
14
#:name (or/c #f string?))
@@ -39,24 +36,12 @@
39
36
40
37
;; READ
41
38
42
Removed:
(define (get-crops #:id [id #f]
43
Removed:
#:name [name #f])
44
Removed:
(define (where-expr)
45
Removed:
(define clauses
46
Removed:
(filter values
47
Removed:
(list
48
Removed:
(and id (format "id = ~e" id))
49
Removed:
(and name (format "canonical_name = ~e" name)))))
50
Removed:
(cond
51
Removed:
[(null? clauses) ""]
52
Removed:
[else (format "WHERE ~a" (string-join clauses " AND "))]))
53
Removed:
(define query (string-join
54
Removed:
`("SELECT id, canonical_name"
55
Removed:
"FROM crops"
56
Removed:
,(where-expr)
57
Removed:
"ORDER BY id ASC")))
39
Added:
(define (get-crops)
58
40
(for/list ([(id* name*)
59
Removed:
(in-query (current-conn) query)])
41
Added:
(in-query (current-conn)
42
Added:
(select id canonical_name
43
Added:
#:from crops
44
Added:
#:order-by id #:asc))])
60
45
(crop id* name*)))
61
46
62
47
(define (get-crop #:id [id #f]
models/fertilizer-product.rkt
@@ -13,12 +13,7 @@
13
13
number?)))
14
14
(string?)
15
15
fertilizer-product?)]
16
Removed:
[get-fertilizer-products (->* ()
17
Removed:
(#:id
18
Removed:
(or/c #f exact-nonnegative-integer?)
19
Removed:
#:brand-name
20
Removed:
(or/c #f string?))
21
Removed:
(listof fertilizer-product?))]
16
Added:
[get-fertilizer-products (-> (listof fertilizer-product?))]
22
17
[get-fertilizer-product (->* ()
23
18
(#:id
24
19
(or/c #f exact-nonnegative-integer?)
@@ -85,23 +80,12 @@
85
80
86
81
;; READ
87
82
88
Removed:
(define (get-fertilizer-products #:id [id #f]
89
Removed:
#:brand-name [brand-name #f])
90
Removed:
(define (where-expr)
91
Removed:
(define clauses
92
Removed:
(filter values
93
Removed:
(list (and id (format "id = ~e" id))
94
Removed:
(and brand-name (format "brand_name = ~e" brand-name)))))
95
Removed:
(cond
96
Removed:
[(null? clauses) ""]
97
Removed:
[else (format "WHERE ~a" (string-join clauses " AND "))]))
98
Removed:
(define query (string-join
99
Removed:
`("SELECT id, brand_name"
100
Removed:
"FROM fertilizer_products"
101
Removed:
,(where-expr)
102
Removed:
"ORDER BY id ASC")))
83
Added:
(define (get-fertilizer-products)
103
84
(for/list ([(id* brand-name*)
104
Removed:
(in-query (current-conn) query)])
85
Added:
(in-query (current-conn)
86
Added:
(select id brand_name
87
Added:
#:from fertilizer_products
88
Added:
#:order-by canonical_name #:asc))])
105
89
(fertilizer-product id* brand-name*)))
106
90
107
91
(define (get-fertilizer-product #:id [id #f]
models/nutrient-measurement.rkt
@@ -12,8 +12,7 @@
12
12
nutrient?
13
13
number?))
14
14
nutrient-measurement?)]
15
Removed:
[get-nutrient-measurements (-> void?
16
Removed:
(listof nutrient-measurement?))]
15
Added:
[get-nutrient-measurements (-> (listof nutrient-measurement?))]
17
16
[get-nutrient-measurement (->* ()
18
17
(#:id (or/c #f exact-nonnegative-integer?)
19
18
#:measured-on (or/c #f string?))
@@ -81,10 +80,9 @@
81
80
(define (get-nutrient-measurements)
82
81
(for/list ([(id* measured-on*)
83
82
(in-query (current-conn)
84
Removed:
(string-join
85
Removed:
`("SELECT id, measured_on"
86
Removed:
"FROM nutrient_measurements"
87
Removed:
"ORDER BY id ASC")))])
83
Added:
(select id measured_on
84
Added:
#:from nutrient_measurements
85
Added:
#:order-by measured_on #:asc))])
88
86
(nutrient-measurement id* measured-on*)))
89
87
90
88
(define (get-nutrient-measurement #:id [id #f]
models/nutrient-target.rkt
@@ -12,8 +12,7 @@
12
12
nutrient?
13
13
number?))
14
14
nutrient-target?)]
15
Removed:
[get-nutrient-targets (-> void?
16
Removed:
(listof nutrient-target?))]
15
Added:
[get-nutrient-targets (-> (listof nutrient-target?))]
17
16
[get-nutrient-target (->* ()
18
17
(#:id
19
18
(or/c #f exact-nonnegative-integer?)
@@ -84,10 +83,9 @@
84
83
(define (get-nutrient-targets)
85
84
(for/list ([(id* effective-on*)
86
85
(in-query (current-conn)
87
Removed:
(string-join
88
Removed:
`("SELECT id, effective_on"
89
Removed:
"FROM nutrient_targets"
90
Removed:
"ORDER BY id ASC")))])
86
Added:
(select id effective_on
87
Added:
#:from nutrient_targets
88
Added:
#:order-by id ASC))])
91
89
(nutrient-target id* effective-on*)))
92
90
93
91
(define (get-nutrient-target #:id [id #f]
models/nutrient.rkt
@@ -8,11 +8,7 @@
8
8
;; SQL CRUD
9
9
(contract-out
10
10
[create-nutrient! (-> string? string? void?)]
11
Removed:
[get-nutrients (->* ()
12
Removed:
(#:id (or/c #f exact-nonnegative-integer?)
13
Removed:
#:name (or/c #f string?)
14
Removed:
#:formula (or/c #f string?))
15
Removed:
(listof nutrient?))]
11
Added:
[get-nutrients (-> (listof nutrient?))]
16
12
[get-nutrient (->* ()
17
13
(#:id (or/c #f exact-nonnegative-integer?)
18
14
#:name (or/c #f string?)
@@ -42,26 +38,12 @@
42
38
43
39
;; READ
44
40
45
Removed:
(define (get-nutrients #:id [id #f]
46
Removed:
#:name [name #f]
47
Removed:
#:formula [formula #f])
48
Removed:
(define (where-expr)
49
Removed:
(define clauses
50
Removed:
(filter values
51
Removed:
(list
52
Removed:
(and id (format "id = ~e" id))
53
Removed:
(and name (format "canonical_name = ~e" name))
54
Removed:
(and formula (format "formula = ~e" formula)))))
55
Removed:
(cond
56
Removed:
[(null? clauses) ""]
57
Removed:
[else (format "WHERE ~a" (string-join clauses " AND "))]))
41
Added:
(define (get-nutrients)
58
42
(for/list ([(id* name* formula*)
59
43
(in-query (current-conn)
60
Removed:
(string-join
61
Removed:
`("SELECT id, canonical_name, formula"
62
Removed:
"FROM nutrients"
63
Removed:
,(where-expr)
64
Removed:
"ORDER BY id ASC")))])
44
Added:
(select id canonical_name formula
45
Added:
#:from nutrients
46
Added:
#:order-by id #:asc))])
65
47
(nutrient id* name* formula*)))
66
48
67
49
(define (get-nutrient #:id [id #f]