[Racket] Ferti hydroponic nutrient solver, redux.
Ensure idempotency for the seeding of other domain entities.
db/seed.rkt
@@ -86,11 +86,12 @@
86
86
(define n (get-nutrient #:formula formula))
87
87
(define v (string->number (cdr crop-requirement)))
88
88
(values n v)))
89
Removed:
(cond
90
Removed:
[(non-empty-string? crop-name)
91
Removed:
(define crop (get-crop #:name crop-name))
92
Removed:
(create-crop-requirement! profile nutrient-values crop)]
93
Removed:
[else (create-crop-requirement! profile nutrient-values)]))
89
Added:
(unless (get-crop-requirement #:profile profile)
90
Added:
(cond
91
Added:
[(non-empty-string? crop-name)
92
Added:
(define crop (get-crop #:name crop-name))
93
Added:
(create-crop-requirement! profile nutrient-values crop)]
94
Added:
[else (create-crop-requirement! profile nutrient-values)])))
94
95
(with-tx (csv-for-each row->seed! next-row)))
95
96
96
97
(define (seed-initial-crop-rotation!)
@@ -111,7 +112,8 @@
111
112
(define n (get-nutrient #:formula (car fertilizer-component)))
112
113
(define v (string->number (cdr fertilizer-component)))
113
114
(values n v)))
114
Removed:
(create-fertilizer-product! canonical-name brand-name nutrient-values))
115
Added:
(unless (get-fertilizer-product #:canonical-name canonical-name)
116
Added:
(create-fertilizer-product! canonical-name brand-name nutrient-values)))
115
117
(with-tx (csv-for-each row->seed! next-row)))
116
118
117
119
(module+ test