summaryrefslogtreecommitdiff
path: root/src/chef/api/admin/category.clj
blob: 2d1151015c41e975be3a1f948c97b95139ef770b (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
(ns chef.api.admin.category
  (:require [chef.utils :as cutils]
            [chef.logic.categories :as clcategories]
            [ring.util.response :as ruresp]))

;; POST /
(defn handle-edit [req]
  (cutils/auth-only req
                    (if-let [id (cutils/s->int-or-nil (get-in req [:path-params :id]))]
                      (do (clcategories/update-category! id (merge {}
                                                                   (when-let [name (get-in req [:params "name"])]
                                                                     {:name name})
                                                                   (when-let [question (get-in req [:params "question"])]
                                                                     {:question question})))
                          (ruresp/response "Updated."))
                      (ruresp/bad-request "Bad request."))))

;; DELETE /
(defn handle-delete [req]
  (cutils/auth-only req
                    (let [id (cutils/s->int-or-nil (get-in req [:path-params :id]))]
                      (if (and (some? id)
                               (not= id -1))
                        (do (clcategories/delete-category-and-children! id)
                            (-> (ruresp/response "Deleted.")
                                (ruresp/header "HX-Refresh" "true")))
                        (ruresp/bad-request "Bad request.")))))

;; POST /create
(defn handle-create [req]
  (cutils/auth-only req
                    (clcategories/create-category! (or (get-in req [:params "parent"])
                                                       -1))
                    (-> (ruresp/created "Created.")
                        (ruresp/header "HX-Refresh" "true"))))