summaryrefslogtreecommitdiff
path: root/models/crop-requirement.rkt
diff options
context:
space:
mode:
authorMarius Peter <dev@marius-peter.com>2025-11-13 16:18:23 +0100
committerMarius Peter <dev@marius-peter.com>2025-11-13 16:18:23 +0100
commit96a7702d4f8fe7840325ea75564801409d63d821 (patch)
treed38a9b233ade8502b8988482ae098affd4de63dc /models/crop-requirement.rkt
parent7b09445140983623173203c4594bb54dcd55fe1e (diff)
Use nutrient-value-pair/c contract throughout domain model.
Diffstat (limited to 'models/crop-requirement.rkt')
-rw-r--r--models/crop-requirement.rkt14
1 files changed, 9 insertions, 5 deletions
diff --git a/models/crop-requirement.rkt b/models/crop-requirement.rkt
index 23740e7..e5f8ae6 100644
--- a/models/crop-requirement.rkt
+++ b/models/crop-requirement.rkt
@@ -1,14 +1,14 @@
#lang racket
(provide
- ;; Struct definitions
+ ;; Model struct
crop-requirement
crop-requirement?
crop-requirement-id crop-requirement-profile crop-requirement-crop-id
- ;; SQL CRUD
(contract-out
+ ;; SQL CRUD
[create-crop-requirement! (->* (string?
- (listof (cons/c nutrient? number?)))
+ (listof nutrient-value-pair/c))
((or/c #f crop?))
crop-requirement?)]
[get-crop-requirements (-> (listof crop-requirement?))]
@@ -16,10 +16,14 @@
(#:id (or/c #f exact-nonnegative-integer?)
#:profile (or/c #f string?))
(or/c crop-requirement? #f))]
- [get-crop-requirement-values (-> crop-requirement? (listof (cons/c nutrient? number?)))]
+ [get-crop-requirement-values (-> crop-requirement? (listof nutrient-value-pair/c))]
[get-crop-requirement-value (-> crop-requirement? nutrient? number?)]
[get-latest-crop-requirement-value (-> nutrient? number?)]
- [delete-crop-requirement! (-> crop-requirement? void?)]))
+ [delete-crop-requirement! (-> crop-requirement? void?)]
+ ;; Helpers
+ [average-crop-requirement-nutrient-values (-> (listof (cons/c crop-requirement?
+ (and/c real? (>=/c 0) (<=/c 100))))
+ (listof nutrient-value-pair/c))]))
(require racket/contract
db
Copyright 2019--2026 Marius PETER