From 96a7702d4f8fe7840325ea75564801409d63d821 Mon Sep 17 00:00:00 2001 From: Marius Peter Date: Thu, 13 Nov 2025 16:18:23 +0100 Subject: Use nutrient-value-pair/c contract throughout domain model. --- models/crop-requirement.rkt | 14 +++++++++----- models/crop.rkt | 4 ++-- models/fertilizer-product.rkt | 8 ++++---- models/nutrient-measurement.rkt | 8 ++++---- models/nutrient-target.rkt | 8 ++++---- models/user.rkt | 4 ++-- 6 files changed, 25 insertions(+), 21 deletions(-) (limited to 'models') 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?)])) -- cgit v1.2.3