#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 #"" (index-page measurements))) (define (new-measurement _) (response/xexpr #:preamble #"" (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 #"" (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]))