[Racket] Ferti hydroponic nutrient solver, redux.
Remove useless intermediary module.
This module does not reduce complexity, nor provide useful abstractions.
models/nutrient-value-set.rkt
@@ -1,98 +0,0 @@
1
Removed:
#lang racket
2
Removed:
3
Removed:
(provide nutrient-value-set
4
Removed:
nutrient-value-set?
5
Removed:
nutrient-value-set-id
6
Removed:
;; nutrient-value-set-nm-id
7
Removed:
;; nutrient-value-set-nt-id
8
Removed:
;; nutrient-value-set-cr-id
9
Removed:
;; nutrient-value-set-fp-id
10
Removed:
;; SQL CRUD
11
Removed:
(contract-out
12
Removed:
[create-nutrient-value-set! (-> symbol?
13
Removed:
exact-nonnegative-integer?
14
Removed:
(listof (cons/c
15
Removed:
nutrient?
16
Removed:
number?))
17
Removed:
void?)]
18
Removed:
[get-nutrient-value-set (->* ()
19
Removed:
(#:id exact-nonnegative-integer?
20
Removed:
#:nutrient-measurement-id exact-nonnegative-integer?
21
Removed:
#:nutrient-target-id exact-nonnegative-integer?
22
Removed:
#:crop-requirement-id exact-nonnegative-integer?
23
Removed:
#:fertilizer-product-id exact-nonnegative-integer?)
24
Removed:
(or/c nutrient-value-set? #f))]))
25
Removed:
26
Removed:
(require racket/contract
27
Removed:
db
28
Removed:
sql
29
Removed:
"../db/conn.rkt"
30
Removed:
"nutrient.rkt")
31
Removed:
32
Removed:
(struct nutrient-value-set (id nm-id nt-id cr-id fp-id) #:transparent)
33
Removed:
34
Removed:
35
Removed:
;; CREATE
36
Removed:
37
Removed:
(define (create-nutrient-value-set! type id nutrient-values)
38
Removed:
(define nvs (case type
39
Removed:
[(nutrient-measurement)
40
Removed:
(query-exec (current-conn)
41
Removed:
(insert #:into nutrient_value_sets
42
Removed:
#:set [nutrient_measurement_id ,id]))
43
Removed:
(get-nutrient-value-set #:nutrient-measurement-id id)]
44
Removed:
[(nutrient-target)
45
Removed:
(query-exec (current-conn)
46
Removed:
(insert #:into nutrient_value_sets
47
Removed:
#:set [nutrient_target_id ,id]))
48
Removed:
(get-nutrient-value-set #:nutrient-target-id id)]
49
Removed:
[(crop-requirement)
50
Removed:
(query-exec (current-conn)
51
Removed:
(insert #:into nutrient_value_sets
52
Removed:
#:set [crop_requirement_id ,id]))
53
Removed:
(get-nutrient-value-set #:crop-requirement-id id)]
54
Removed:
[(fertilizer-product)
55
Removed:
(query-exec (current-conn)
56
Removed:
(insert #:into nutrient_value_sets
57
Removed:
#:set [fertilizer_product_id ,id]))
58
Removed:
(get-nutrient-value-set #:fertilizer-product-id id)]))
59
Removed:
(for ([nv nutrient-values])
60
Removed:
(match nv
61
Removed:
[(cons n v)
62
Removed:
(query-exec (current-conn)
63
Removed:
(insert #:into nutrient_values
64
Removed:
#:set
65
Removed:
[value_set_id ,(nutrient-value-set-id nvs)]
66
Removed:
[nutrient_id ,(nutrient-id n)]
67
Removed:
[value_ppm ,v]))])))
68
Removed:
69
Removed:
70
Removed:
;; READ
71
Removed:
72
Removed:
(define (get-nutrient-value-set #:id [id #f]
73
Removed:
#:nutrient-measurement-id [nm #f]
74
Removed:
#:nutrient-target-id [nt #f]
75
Removed:
#:crop-requirement-id [cr #f]
76
Removed:
#:fertilizer-product-id [fp #f])
77
Removed:
(define (where-expr)
78
Removed:
(define clauses
79
Removed:
(filter values
80
Removed:
(list
81
Removed:
(and id (format "id = ~e" id))
82
Removed:
(and nm (format "nutrient_measurement_id = ~e" nm))
83
Removed:
(and nt (format "nutrient_target_id = ~e" nt))
84
Removed:
(and cr (format "crop_requirement = ~e" cr))
85
Removed:
(and fp (format "fertilizer_product = ~e" fp)))))
86
Removed:
(cond
87
Removed:
[(null? clauses) ""]
88
Removed:
[else (format "WHERE ~a" (string-join clauses " AND "))]))
89
Removed:
(define query (string-join
90
Removed:
`("SELECT *"
91
Removed:
"FROM nutrient_value_sets"
92
Removed:
,(where-expr)
93
Removed:
"ORDER BY id ASC"
94
Removed:
"LIMIT 1")))
95
Removed:
(match (query-maybe-row (current-conn) query)
96
Removed:
[(vector id* nm-id* nt-id* cr-id* fp-id*)
97
Removed:
(nutrient-value-set id* nm-id* nt-id* cr-id* fp-id*)]
98
Removed:
[#f #f]))