summaryrefslogtreecommitdiff
path: root/models
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
parent7b09445140983623173203c4594bb54dcd55fe1e (diff)
Use nutrient-value-pair/c contract throughout domain model.
Diffstat (limited to 'models')
-rw-r--r--models/crop-requirement.rkt14
-rw-r--r--models/crop.rkt4
-rw-r--r--models/fertilizer-product.rkt8
-rw-r--r--models/nutrient-measurement.rkt8
-rw-r--r--models/nutrient-target.rkt8
-rw-r--r--models/user.rkt4
6 files changed, 25 insertions, 21 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
diff --git a/models/crop.rkt b/models/crop.rkt
index 0dfbbb5..51b332d 100644
--- a/models/crop.rkt
+++ b/models/crop.rkt
@@ -1,12 +1,12 @@
#lang racket
(provide
- ;; Struct definitions
+ ;; Model struct
crop
crop?
crop-id crop-name
- ;; SQL CRUD
(contract-out
+ ;; SQL CRUD
[create-crop! (-> string? crop?)]
[get-crops (-> (listof crop?))]
[get-crop (->* ()
diff --git a/models/fertilizer-product.rkt b/models/fertilizer-product.rkt
index 2322cc0..0809f73 100644
--- a/models/fertilizer-product.rkt
+++ b/models/fertilizer-product.rkt
@@ -1,7 +1,7 @@
#lang racket
(provide
- ;; Struct definitions
+ ;; Model struct
fertilizer-product
fertilizer-product?
fertilizer-product-id
@@ -9,10 +9,10 @@
[fertilizer-product-canonical-name fertilizer-name]
[fertilizer-product-nutrient-values fertilizer-product-values]
[fertilizer-product-brand-name fertilizer-brand-name])
- ;; SQL CRUD
(contract-out
+ ;; SQL CRUD
[create-fertilizer-product! (->* (string?
- (listof (cons/c nutrient? number?)))
+ (listof nutrient-value-pair/c))
(string?)
fertilizer-product?)]
[get-fertilizer-products (-> (listof fertilizer-product?))]
@@ -21,7 +21,7 @@
#:canonical-name (or/c #f string?))
(or/c fertilizer-product? #f))]
[get-fertilizer-product-values (-> fertilizer-product?
- (listof (cons/c nutrient? number?)))]
+ (listof nutrient-value-pair/c))]
[get-fertilizer-product-value (-> fertilizer-product? nutrient? number?)]
[delete-fertilizer-product! (-> fertilizer-product? void?)]))
diff --git a/models/nutrient-measurement.rkt b/models/nutrient-measurement.rkt
index e73a10e..ee336fe 100644
--- a/models/nutrient-measurement.rkt
+++ b/models/nutrient-measurement.rkt
@@ -1,17 +1,17 @@
#lang racket
(provide
- ;; Struct definitions
+ ;; Model struct
nutrient-measurement
nutrient-measurement?
nutrient-measurement-id
(rename-out
[nutrient-measurement-measured-on nutrient-measurement-date]
[nutrient-measurement-nutrient-values nutrient-measurement-values])
- ;; SQL CRUD
(contract-out
+ ;; SQL CRUD
[create-nutrient-measurement! (-> string?
- (listof (cons/c nutrient? number?))
+ (listof nutrient-value-pair/c)
nutrient-measurement?)]
[get-nutrient-measurements (-> (listof nutrient-measurement?))]
[get-nutrient-measurement (->* ()
@@ -19,7 +19,7 @@
#:measured-on (or/c #f string?))
(or/c nutrient-measurement? #f))]
[get-nutrient-measurement-values (-> nutrient-measurement?
- (listof (cons/c nutrient? number?)))]
+ (listof nutrient-value-pair/c))]
[get-nutrient-measurement-value (-> nutrient-measurement? nutrient? number?)]
[get-latest-nutrient-measurement-value (-> nutrient? (or/c number? #f))]
[delete-nutrient-measurement! (-> nutrient-measurement? void?)]))
diff --git a/models/nutrient-target.rkt b/models/nutrient-target.rkt
index 2d85e6e..c2f9c2e 100644
--- a/models/nutrient-target.rkt
+++ b/models/nutrient-target.rkt
@@ -1,24 +1,24 @@
#lang racket
(provide
- ;; Struct definitions
+ ;; Model struct
nutrient-target
nutrient-target?
nutrient-target-id
(rename-out
[nutrient-target-effective-on nutrient-target-date]
[nutrient-target-nutrient-values nutrient-target-values])
- ;; SQL CRUD
(contract-out
+ ;; SQL CRUD
[create-nutrient-target! (-> string?
- (listof (cons/c nutrient? number?))
+ (listof nutrient-value-pair/c)
nutrient-target?)]
[get-nutrient-targets (-> (listof nutrient-target?))]
[get-nutrient-target (->* ()
(#:id (or/c #f exact-nonnegative-integer?)
#:effective-on (or/c #f string?))
(or/c nutrient-target? #f))]
- [get-nutrient-target-values (-> nutrient-target? (listof (cons/c nutrient? number?)))]
+ [get-nutrient-target-values (-> nutrient-target? (listof nutrient-value-pair/c))]
[get-nutrient-target-value (-> nutrient-target? nutrient? number?)]
[get-latest-nutrient-target-value (-> nutrient? (or/c number? #f))]
[delete-nutrient-target! (-> nutrient-target? void?)]))
diff --git a/models/user.rkt b/models/user.rkt
index 2cbf4fe..a56b469 100644
--- a/models/user.rkt
+++ b/models/user.rkt
@@ -1,14 +1,14 @@
#lang racket
(provide
- ;; Struct definitions
+ ;; Model struct
user
user?
user-id
user-name
user-role
- ;; SQL CRUD
(contract-out
+ ;; SQL CRUD
[get-current-user (-> (or/c user? #f))]
#; [delete-user! (-> user? void?)]))
Copyright 2019--2026 Marius PETER