summaryrefslogtreecommitdiff
path: root/models
diff options
context:
space:
mode:
authorMarius Peter <dev@marius-peter.com>2025-12-03 21:03:17 +0100
committerMarius Peter <dev@marius-peter.com>2025-12-03 21:03:17 +0100
commit68d6f58c87b54a048fda2bd50c2fdb22ee4abdda (patch)
tree6d53024da1835637a56d0dab437f66c96ea599be /models
parent48b3a00cf6313ea96b3557a88a79b12eeb06cdfe (diff)
Fix model modules.
Diffstat (limited to 'models')
-rw-r--r--models/crop-requirement.rkt7
-rw-r--r--models/crop-rotation.rkt1
-rw-r--r--models/fertilizer-product.rkt2
3 files changed, 5 insertions, 5 deletions
diff --git a/models/crop-requirement.rkt b/models/crop-requirement.rkt
index 765f3fe..bc02fb5 100644
--- a/models/crop-requirement.rkt
+++ b/models/crop-requirement.rkt
@@ -15,7 +15,7 @@
[get-crop-requirement-value (-> crop-requirement-or-id/c nutrient? maybe-nutrient-value?)]
[delete-crop-requirement! (-> crop-requirement-or-id/c void?)]
[average-crop-requirement-nutrient-values
- (-> (listof (cons/c crop-requirement? (between/c 0 100))) nutrient-value-hash/c)]))
+ (-> (hash/c crop-requirement? (between/c 0 100)) nutrient-value-hash/c)]))
(require racket/contract
db
@@ -150,8 +150,7 @@
;; Helpers
(define (average-crop-requirement-nutrient-values mix)
- (for/fold ([acc (hash)]) ([pair (in-list mix)])
- (match-define (cons crop-requirement percentage) pair)
+ (for/fold ([acc (hash)]) ([(crop-requirement percentage) (in-hash mix)])
(define weight (/ percentage 100))
(for/fold ([acc acc])
([(nutrient value) (in-hash (crop-requirement-nutrient-values crop-requirement))])
@@ -231,7 +230,7 @@
(define cr1 (get-crop-requirement #:profile requirement-profile))
(define cr2 (create-crop-requirement! "Lettuce" (hash nitrogen 100 phosphorus 30)))
- (define mix (list (cons cr1 60) (cons cr2 40)))
+ (define mix (hash cr1 60 cr2 40))
(define avg (average-crop-requirement-nutrient-values mix))
;; 150 * 0.6 + 100 * 0.4 = 90 + 40 = 130
diff --git a/models/crop-rotation.rkt b/models/crop-rotation.rkt
index 1033b8e..37c242f 100644
--- a/models/crop-rotation.rkt
+++ b/models/crop-rotation.rkt
@@ -59,6 +59,7 @@
(define (residuals->requirement-proportion-hash residuals)
(for/hash ([r (in-list residuals)])
(match-define (vector requirement-id proportion) r)
+ ;; TODO: Fix this N+1 query problem.
(values (get-crop-requirement #:id requirement-id) proportion)))
(define (grouped-row->crop-rotation grouped-row)
diff --git a/models/fertilizer-product.rkt b/models/fertilizer-product.rkt
index 9427844..7c1ca54 100644
--- a/models/fertilizer-product.rkt
+++ b/models/fertilizer-product.rkt
@@ -3,7 +3,7 @@
(provide fertilizer-product
fertilizer-product?
fertilizer-product-id
- (rename-out [fertilizer-product-canonical-name fertilizer-name]
+ (rename-out [fertilizer-product-canonical-name fertilizer-product-name]
[fertilizer-product-nutrient-values fertilizer-product-values]
[fertilizer-product-brand-name fertilizer-brand-name])
(contract-out
Copyright 2019--2026 Marius PETER