diff options
Diffstat (limited to 'handlers.rkt')
| -rw-r--r-- | handlers.rkt | 48 | 
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]))  |