summaryrefslogtreecommitdiff
path: root/src/chef/api/admin/recipe.clj
blob: c69ade555a156daa742988e8ba0c462e199c57bb (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
(ns chef.api.admin.recipe
  (:require [chef.utils :as cutils]
            [chef.logic.recipes :as clrecipes]
            [ring.util.response :as ruresp]))

;; POST /
(defn handle-edit [req]
  (cutils/auth-only req
                    (let [id (cutils/s->int-or-nil (get-in req [:path-params :id]))
                          ingredients (get-in req [:params "ingredients"])]
                      (if (and (some? id)
                               (cutils/valid-ingredients? ingredients))
                        (do (when-let [thumbnail (get-in req [:params "thumbnail"])]
                              (clrecipes/set-recipe-thumbnail! id thumbnail))
                            (clrecipes/update-recipe! id {:title       (get-in req [:params "title"])
                                                          :category    (get-in req [:params "category"])
                                                          :unit        (get-in req [:params "ingredients-unit"])
                                                          :ingredients ingredients
                                                          :preparation (get-in req [:params "preparation"])})
                            (ruresp/response "Saved."))
                        (ruresp/bad-request "Bad request.")))))

;; DELETE /
(defn handle-delete [req]
  (cutils/auth-only req
                    (if-let [id (cutils/s->int-or-nil (get-in req [:path-params :id]))]
                      (do (clrecipes/delete-recipe! id)
                          (-> (ruresp/response "Deleted.")
                              (ruresp/header "HX-Refresh" "true")))
                      (ruresp/bad-request "Bad request."))))

;; POST /create
(defn handle-create [req]
  (cutils/auth-only req
                    (clrecipes/create-recipe!)
                    (-> (ruresp/created "Created.")
                        (ruresp/header "HX-Refresh" "true"))))

;; DELETE /thumbnail
(defn handle-delete-thumbnail [req]
  (cutils/auth-only req
                    (if-let [id (cutils/s->int-or-nil (get-in req [:path-params :id]))]
                      (do (clrecipes/remove-recipe-thumbnail! id)
                          (ruresp/response "Done."))
                      (ruresp/bad-request "Bad request."))))