summaryrefslogtreecommitdiff
path: root/handlers.rkt
diff options
context:
space:
mode:
authorMarius Peter <dev@marius-peter.com>2025-10-19 21:15:18 +0200
committerMarius Peter <dev@marius-peter.com>2025-10-19 21:15:18 +0200
commit3008eb25f79ef1ed54fcc2b3f5b6635b34394680 (patch)
tree2b5d2274eff2302e1acd4600869c09ec615262f2 /handlers.rkt
Absorb existing domain data.
Diffstat (limited to 'handlers.rkt')
-rw-r--r--handlers.rkt48
1 files changed, 48 insertions, 0 deletions
diff --git a/handlers.rkt b/handlers.rkt
new file mode 100644
index 0000000..42e4a76
--- /dev/null
+++ b/handlers.rkt
@@ -0,0 +1,48 @@
+#lang racket
+
+(provide app-dispatch)
+
+(require web-server/dispatch
+ web-server/http
+ web-server/formlets
+ "views.rkt"
+ "formlets.rkt"
+ "models/nutrient.rkt"
+ "models/nutrient-measurement.rkt")
+
+
+(define (index _)
+ (define measurements (get-nutrient-measurements))
+ (response/xexpr
+ #:preamble #"<!DOCTYPE html>"
+ (index-page measurements)))
+
+(define (new-measurement _)
+ (response/xexpr
+ #:preamble #"<!DOCTYPE html>"
+ (new-measurement-page)))
+
+(define (create-measurement req)
+ (define-values (measured-on measurements)
+ (formlet-process (measurements-formlet) req))
+ (create-nutrient-measurement! measured-on measurements)
+ (redirect-to "/"))
+
+(define (destroy-measurement req)
+ (define-values (measured-on measurements)
+ (formlet-process (measurements-formlet) req))
+ (create-nutrient-measurement! measured-on measurements)
+ (redirect-to "/"))
+
+(define (fallback req)
+ (response/xexpr
+ #:preamble #"<!DOCTYPE html>"
+ (fallback-page 404)))
+
+(define-values (app-dispatch app-url)
+ (dispatch-rules
+ [("measurement" "new") #:method "get" new-measurement]
+ [("measurement" "create") #:method "post" create-measurement]
+ [("measurement" "destroy") #:method "post" destroy-measurement]
+ [("") #:method "get" index]
+ [else fallback]))
Copyright 2019--2025 Marius PETER