|
|
@ -67,6 +67,9 @@
|
|
67
|
67
|
(def ^:dynamic *shaming*
|
|
68
|
68
|
(ref nil))
|
|
69
|
69
|
|
|
|
70
|
(def ^:dynamic *shaming-file*
|
|
|
71
|
"self.todo.json")
|
|
|
72
|
|
|
70
|
73
|
;; "backend"
|
|
71
|
74
|
|
|
72
|
75
|
(defn read-shame [filename]
|
|
|
@ -78,7 +81,7 @@
|
|
78
|
81
|
;; web service
|
|
79
|
82
|
|
|
80
|
83
|
(dosync
|
|
81
|
|
(ref-set *shaming* (read-shame "self.todo.json")))
|
|
|
84
|
(ref-set *shaming* (read-shame *shaming-file*)))
|
|
82
|
85
|
|
|
83
|
86
|
(defn take-n [start amount coll]
|
|
84
|
87
|
(take amount (drop start coll)))
|
|
|
@ -97,7 +100,8 @@
|
|
97
|
100
|
(defroutes shame-api
|
|
98
|
101
|
(GET "/" [] (response @*shaming*))
|
|
99
|
102
|
(POST "/" [item] (dosync (ref-set *shaming*
|
|
100
|
|
(add-item item @*shaming*))))
|
|
|
103
|
(add-item item @*shaming*)))
|
|
|
104
|
(write-shame *shaming-file* @*shaming*))
|
|
101
|
105
|
(GET "/current" [start limit]
|
|
102
|
106
|
(response
|
|
103
|
107
|
(take-n (int-param start) (int-param limit 10) (:current @*shaming*))))
|
|
|
@ -108,10 +112,12 @@
|
|
108
|
112
|
:name item-name)))
|
|
109
|
113
|
(PUT "/:item-name" [item-name :as {params :params}] ; changes should be in the body?
|
|
110
|
114
|
(dosync (ref-set *shaming*
|
|
111
|
|
(change-item item-name (filter-keys params [:name]) @*shaming*))))
|
|
|
115
|
(change-item item-name (filter-keys params [:name]) @*shaming*)))
|
|
|
116
|
(write-shame *shaming-file* @*shaming*))
|
|
112
|
117
|
(DELETE "/:item-name" [item-name status]
|
|
113
|
118
|
(dosync (ref-set *shaming*
|
|
114
|
|
(close-item item-name (or status "failed") @*shaming*))))
|
|
|
119
|
(close-item item-name (or status "failed") @*shaming*)))
|
|
|
120
|
(write-shame *shaming-file* @*shaming*))
|
|
115
|
121
|
(route/not-found "404 - Alternate Reality Monsters"))
|
|
116
|
122
|
|
|
117
|
123
|
(defn render-item [item]
|