blob: 42e4a7654083550e2566b5151b6a09b2c5d01356 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
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]))
  |