diff options
Diffstat (limited to 'models')
| -rw-r--r-- | models/crop-requirement.rkt | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/models/crop-requirement.rkt b/models/crop-requirement.rkt index 4faa6bb..23740e7 100644 --- a/models/crop-requirement.rkt +++ b/models/crop-requirement.rkt @@ -143,3 +143,20 @@ (query-exec (current-conn) (delete #:from crop_requirements #:where (= id ,id)))) + + +;; Helpers + +(define (average-crop-requirement-nutrient-values mix) + (define average-values + (for/fold ([acc (hash)]) ([pair (in-list mix)]) + (define crop-requirement (car pair)) + (define percentage (/ (cdr pair) 100)) + (for/fold ([acc acc]) + ([nv (in-list (get-crop-requirement-values crop-requirement))]) + (match-define (cons n v) nv) + (hash-update acc n + (λ (old) (+ old (* v percentage))) + (λ () (* v percentage)))))) + (for/list ([(n v) (in-hash average-values)]) + (cons n v))) |