diff options
| author | Marius Peter <dev@marius-peter.com> | 2025-11-29 19:14:22 +0100 |
|---|---|---|
| committer | Marius Peter <dev@marius-peter.com> | 2025-11-29 19:14:22 +0100 |
| commit | f30c8fdb5c2d4aaad025a51329373ccfc0e56ed1 (patch) | |
| tree | c8fec81df5fb291ac717b255d763ae53d4f9a6b4 /handlers.rkt | |
| parent | bc3047f3a5b7b5f5f0c1a62a295c53a5e1cac043 (diff) | |
Add a metric ton's worth of routes.
For now, let's emulate Rails routing, before we identify a more
elegant architecture.
Diffstat (limited to 'handlers.rkt')
| -rw-r--r-- | handlers.rkt | 51 |
1 files changed, 41 insertions, 10 deletions
diff --git a/handlers.rkt b/handlers.rkt index 051254b..fb95091 100644 --- a/handlers.rkt +++ b/handlers.rkt @@ -47,18 +47,29 @@ void)) (define-values (fapg-dispatch fapg-url) - (dispatch-rules [("ferti" "index") #:method "get" ferti-index] + (dispatch-rules [("index") #:method "get" index] + ;; Ferti + [("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] - [("target" "new") #:method "get" new-target] - [("target" "create") #:method "post" create-target] - [("fertilizer" "new") #:method "get" new-fertilizer] - [("fertilizer" "create") #:method "post" create-fertilizer] + ;; Nutrient measurements + [("ferti" "measurement" "new") #:method "get" new-measurement] + [("ferti" "measurement" "create") #:method "post" create-measurement] + [("ferti" "measurement" (integer-arg)) #:method "get" show-measurement] + [("ferti" "measurement" (integer-arg)) #:method "delete" destroy-measurement] + ;; Nutrient targets + [("ferti" "target" "new") #:method "get" new-target] + [("ferti" "target" "create") #:method "post" create-target] + [("ferti" "target" (integer-arg)) #:method "get" show-target] + [("ferti" "target" (integer-arg)) #:method "delete" destroy-target] + ;; Fertilizer products + [("ferti" "fertilizer" "new") #:method "get" new-fertilizer] + [("ferti" "fertilizer" "create") #:method "post" create-fertilizer] + [("ferti" "fertilizer" (integer-arg)) #:method "get" show-fertilizer] + [("ferti" "fertilizer" (integer-arg)) #:method "delete" destroy-fertilizer] + ;; Default [("") #:method "get" index] [else fallback])) @@ -104,8 +115,12 @@ (create-nutrient-measurement! measured-on nutrient-values) (redirect-to "/ferti/measurements")) -(define (destroy-measurement req) - (delete-nutrient-measurement! req) +(define (show-measurement _ id) + (define nm (get-nutrient-measurement #:id id)) + (render-page (show-measurement-page nm))) + +(define (destroy-measurement _ id) + (delete-nutrient-measurement! id) (redirect-to "/ferti/index")) ;; Nutrient targets @@ -118,6 +133,14 @@ (create-nutrient-target! effective-on nutrient-values) (redirect-to "/ferti/targets")) +(define (show-target _ id) + (define nt (get-nutrient-target #:id id)) + (render-page (show-target-page nt))) + +(define (destroy-target _ id) + (delete-nutrient-target! id) + (redirect-to "/ferti/targets")) + ;; Fertilizer products (define (new-fertilizer _) @@ -129,6 +152,14 @@ (create-fertilizer-product! canonical-name brand-name nutrient-values) (redirect-to "/ferti/fertilizers")) +(define (show-fertilizer _ id) + (define fp (get-fertilizer-product #:id id)) + (render-page (show-fertilizer-page fp))) + +(define (destroy-fertilizer _ id) + (delete-fertilizer-product! id) + (redirect-to "/ferti/fertilizers")) + ;; Fallback (define (fallback _) |