summaryrefslogtreecommitdiff
path: root/handlers.rkt
diff options
context:
space:
mode:
authorMarius Peter <dev@marius-peter.com>2025-11-29 13:13:02 +0100
committerMarius Peter <dev@marius-peter.com>2025-11-29 13:13:02 +0100
commit3e6c7e32eee209bfba99ecaaf26836f2a3aef510 (patch)
tree59ef8116bf5eaacf2802ba0197e043357ef08c87 /handlers.rkt
parent79f77ce511bb7ad515fb57156982b8a0bd28087b (diff)
Split Ferti into sub-tabs.
Diffstat (limited to 'handlers.rkt')
-rw-r--r--handlers.rkt53
1 files changed, 38 insertions, 15 deletions
diff --git a/handlers.rkt b/handlers.rkt
index 17a57dd..051254b 100644
--- a/handlers.rkt
+++ b/handlers.rkt
@@ -1,6 +1,7 @@
#lang racket
-(provide secured-dispatch)
+(provide secured-dispatch
+ fapg-url)
(require web-server/dispatch
web-server/http
@@ -9,6 +10,7 @@
"views.rkt"
"formlets.rkt"
"models/user.rkt"
+ "models/nutrient.rkt"
"models/nutrient-measurement.rkt"
"models/nutrient-target.rkt"
"models/fertilizer-product.rkt"
@@ -20,7 +22,7 @@
(or (getenv "FERTI_PASS") (error 'ferti "FERTI_PASS environment variable is not set")))
(define (secured-dispatch)
- (wrap-basic-auth app-dispatch))
+ (wrap-basic-auth fapg-dispatch))
(define (wrap-basic-auth handler)
(lambda (req)
@@ -44,8 +46,12 @@
(list (make-basic-auth-header (format "Basic Auth Test: ~a" (gensym))))
void))
-(define-values (app-dispatch _)
- (dispatch-rules [("ferti") #:method "get" ferti]
+(define-values (fapg-dispatch fapg-url)
+ (dispatch-rules [("ferti" "index") #:method "get" ferti-index]
+ [("ferti" "measurements") #:method "get" ferti-measurements]
+ [("ferti" "targets") #:method "get" ferti-targets]
+ [("ferti" "recipe") #:method "get" ferti-recipe]
+ [("ferti" "fertilizers") #:method "get" ferti-fertilizers]
[("measurement" "new") #:method "get" new-measurement]
[("measurement" "create") #:method "post" create-measurement]
[("measurement" "destroy") #:method "post" destroy-measurement]
@@ -59,18 +65,35 @@
(define (render-page xexpr)
(response/xexpr #:preamble #"<!DOCTYPE html>" xexpr))
-(define (ferti _)
- (define ferti-recipe (find-ferti-recipe))
- (define latest-measurement-hash (get-latest-nutrient-measurement-hash))
- (define latest-target-hash (get-latest-nutrient-target-hash))
- (define latest-measurements (take (get-nutrient-measurements) 10))
- (render-page
- (ferti-page ferti-recipe latest-measurement-hash latest-target-hash latest-measurements)))
+;; Index
(define (index _)
(define user (get-current-user))
(render-page (index-page user)))
+;; Ferti
+
+(define (ferti-index _)
+ (render-page (ferti-index-page)))
+
+(define (ferti-measurements _)
+ (define nutrients (get-nutrients))
+ (define measurements (get-nutrient-measurements))
+ (render-page (ferti-measurements-page nutrients measurements)))
+
+(define (ferti-targets _)
+ (define latest-measurement-hash (get-latest-nutrient-measurement-hash))
+ (define latest-target-hash (get-latest-nutrient-target-hash))
+ (render-page (ferti-targets-page latest-measurement-hash latest-target-hash)))
+
+(define (ferti-recipe _)
+ (define ferti-recipe (find-ferti-recipe))
+ (render-page (ferti-recipe-page ferti-recipe)))
+
+(define (ferti-fertilizers _)
+ (define fertilizers (get-fertilizer-products))
+ (render-page (ferti-fertilizers-page fertilizers)))
+
;; Nutrient measurements
(define (new-measurement _)
@@ -79,11 +102,11 @@
(define (create-measurement req)
(define-values (measured-on nutrient-values) (formlet-process (measurements-formlet) req))
(create-nutrient-measurement! measured-on nutrient-values)
- (redirect-to "/ferti"))
+ (redirect-to "/ferti/measurements"))
(define (destroy-measurement req)
(delete-nutrient-measurement! req)
- (redirect-to "/ferti"))
+ (redirect-to "/ferti/index"))
;; Nutrient targets
@@ -93,7 +116,7 @@
(define (create-target req)
(define-values (effective-on nutrient-values) (formlet-process (targets-formlet) req))
(create-nutrient-target! effective-on nutrient-values)
- (redirect-to "/ferti"))
+ (redirect-to "/ferti/targets"))
;; Fertilizer products
@@ -104,7 +127,7 @@
(define-values (canonical-name brand-name nutrient-values)
(formlet-process (fertilizer-formlet) req))
(create-fertilizer-product! canonical-name brand-name nutrient-values)
- (redirect-to "/ferti"))
+ (redirect-to "/ferti/fertilizers"))
;; Fallback
Copyright 2019--2026 Marius PETER