Selaa lähdekoodia

Write out the todo-list after each modifying operation.

Lucas Stadler 13 vuotta sitten
vanhempi
commit
83fcde63ca
1 muutettua tiedostoa jossa 10 lisäystä ja 4 poistoa
  1. 10 4
      clj/shame.clj

+ 10 - 4
clj/shame.clj

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