[Racket] Ferti hydroponic nutrient solver, redux.
Use nutrient-value-pair/c contract throughout domain model.
Changed files
models/crop-requirement.rkt
@@ -1,14 +1,14 @@
1
1
#lang racket
2
2
3
3
(provide
4
Removed:
;; Struct definitions
4
Added:
;; Model struct
5
5
crop-requirement
6
6
crop-requirement?
7
7
crop-requirement-id crop-requirement-profile crop-requirement-crop-id
8
Removed:
;; SQL CRUD
9
8
(contract-out
9
Added:
;; SQL CRUD
10
10
[create-crop-requirement! (->* (string?
11
Removed:
(listof (cons/c nutrient? number?)))
11
Added:
(listof nutrient-value-pair/c))
12
12
((or/c #f crop?))
13
13
crop-requirement?)]
14
14
[get-crop-requirements (-> (listof crop-requirement?))]
@@ -16,10 +16,14 @@
16
16
(#:id (or/c #f exact-nonnegative-integer?)
17
17
#:profile (or/c #f string?))
18
18
(or/c crop-requirement? #f))]
19
Removed:
[get-crop-requirement-values (-> crop-requirement? (listof (cons/c nutrient? number?)))]
19
Added:
[get-crop-requirement-values (-> crop-requirement? (listof nutrient-value-pair/c))]
20
20
[get-crop-requirement-value (-> crop-requirement? nutrient? number?)]
21
21
[get-latest-crop-requirement-value (-> nutrient? number?)]
22
Removed:
[delete-crop-requirement! (-> crop-requirement? void?)]))
22
Added:
[delete-crop-requirement! (-> crop-requirement? void?)]
23
Added:
;; Helpers
24
Added:
[average-crop-requirement-nutrient-values (-> (listof (cons/c crop-requirement?
25
Added:
(and/c real? (>=/c 0) (<=/c 100))))
26
Added:
(listof nutrient-value-pair/c))]))
23
27
24
28
(require racket/contract
25
29
db
models/crop.rkt
@@ -1,12 +1,12 @@
1
1
#lang racket
2
2
3
3
(provide
4
Removed:
;; Struct definitions
4
Added:
;; Model struct
5
5
crop
6
6
crop?
7
7
crop-id crop-name
8
Removed:
;; SQL CRUD
9
8
(contract-out
9
Added:
;; SQL CRUD
10
10
[create-crop! (-> string? crop?)]
11
11
[get-crops (-> (listof crop?))]
12
12
[get-crop (->* ()
models/fertilizer-product.rkt
@@ -1,7 +1,7 @@
1
1
#lang racket
2
2
3
3
(provide
4
Removed:
;; Struct definitions
4
Added:
;; Model struct
5
5
fertilizer-product
6
6
fertilizer-product?
7
7
fertilizer-product-id
@@ -9,10 +9,10 @@
9
9
[fertilizer-product-canonical-name fertilizer-name]
10
10
[fertilizer-product-nutrient-values fertilizer-product-values]
11
11
[fertilizer-product-brand-name fertilizer-brand-name])
12
Removed:
;; SQL CRUD
13
12
(contract-out
13
Added:
;; SQL CRUD
14
14
[create-fertilizer-product! (->* (string?
15
Removed:
(listof (cons/c nutrient? number?)))
15
Added:
(listof nutrient-value-pair/c))
16
16
(string?)
17
17
fertilizer-product?)]
18
18
[get-fertilizer-products (-> (listof fertilizer-product?))]
@@ -21,7 +21,7 @@
21
21
#:canonical-name (or/c #f string?))
22
22
(or/c fertilizer-product? #f))]
23
23
[get-fertilizer-product-values (-> fertilizer-product?
24
Removed:
(listof (cons/c nutrient? number?)))]
24
Added:
(listof nutrient-value-pair/c))]
25
25
[get-fertilizer-product-value (-> fertilizer-product? nutrient? number?)]
26
26
[delete-fertilizer-product! (-> fertilizer-product? void?)]))
27
27
models/nutrient-measurement.rkt
@@ -1,17 +1,17 @@
1
1
#lang racket
2
2
3
3
(provide
4
Removed:
;; Struct definitions
4
Added:
;; Model struct
5
5
nutrient-measurement
6
6
nutrient-measurement?
7
7
nutrient-measurement-id
8
8
(rename-out
9
9
[nutrient-measurement-measured-on nutrient-measurement-date]
10
10
[nutrient-measurement-nutrient-values nutrient-measurement-values])
11
Removed:
;; SQL CRUD
12
11
(contract-out
12
Added:
;; SQL CRUD
13
13
[create-nutrient-measurement! (-> string?
14
Removed:
(listof (cons/c nutrient? number?))
14
Added:
(listof nutrient-value-pair/c)
15
15
nutrient-measurement?)]
16
16
[get-nutrient-measurements (-> (listof nutrient-measurement?))]
17
17
[get-nutrient-measurement (->* ()
@@ -19,7 +19,7 @@
19
19
#:measured-on (or/c #f string?))
20
20
(or/c nutrient-measurement? #f))]
21
21
[get-nutrient-measurement-values (-> nutrient-measurement?
22
Removed:
(listof (cons/c nutrient? number?)))]
22
Added:
(listof nutrient-value-pair/c))]
23
23
[get-nutrient-measurement-value (-> nutrient-measurement? nutrient? number?)]
24
24
[get-latest-nutrient-measurement-value (-> nutrient? (or/c number? #f))]
25
25
[delete-nutrient-measurement! (-> nutrient-measurement? void?)]))
models/nutrient-target.rkt
@@ -1,24 +1,24 @@
1
1
#lang racket
2
2
3
3
(provide
4
Removed:
;; Struct definitions
4
Added:
;; Model struct
5
5
nutrient-target
6
6
nutrient-target?
7
7
nutrient-target-id
8
8
(rename-out
9
9
[nutrient-target-effective-on nutrient-target-date]
10
10
[nutrient-target-nutrient-values nutrient-target-values])
11
Removed:
;; SQL CRUD
12
11
(contract-out
12
Added:
;; SQL CRUD
13
13
[create-nutrient-target! (-> string?
14
Removed:
(listof (cons/c nutrient? number?))
14
Added:
(listof nutrient-value-pair/c)
15
15
nutrient-target?)]
16
16
[get-nutrient-targets (-> (listof nutrient-target?))]
17
17
[get-nutrient-target (->* ()
18
18
(#:id (or/c #f exact-nonnegative-integer?)
19
19
#:effective-on (or/c #f string?))
20
20
(or/c nutrient-target? #f))]
21
Removed:
[get-nutrient-target-values (-> nutrient-target? (listof (cons/c nutrient? number?)))]
21
Added:
[get-nutrient-target-values (-> nutrient-target? (listof nutrient-value-pair/c))]
22
22
[get-nutrient-target-value (-> nutrient-target? nutrient? number?)]
23
23
[get-latest-nutrient-target-value (-> nutrient? (or/c number? #f))]
24
24
[delete-nutrient-target! (-> nutrient-target? void?)]))
models/user.rkt
@@ -1,14 +1,14 @@
1
1
#lang racket
2
2
3
3
(provide
4
Removed:
;; Struct definitions
4
Added:
;; Model struct
5
5
user
6
6
user?
7
7
user-id
8
8
user-name
9
9
user-role
10
Removed:
;; SQL CRUD
11
10
(contract-out
11
Added:
;; SQL CRUD
12
12
[get-current-user (-> (or/c user? #f))]
13
13
#; [delete-user! (-> user? void?)]))
14
14