blob: a15b897df91273b669ec947fa7eaca64610e11a2 (
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
|
(ns chef.pages.admin.api
(:require [chef.utils :as cutils]
[chef.database :as cdb]
[next.jdbc :as jdbc]
[honey.sql :as sql]
[ring.util.response :as ruresp]))
(defn create-category [req]
(cutils/auth-only req
(jdbc/execute! @cdb/db
(sql/format {:insert-into [:categories]
:values [(merge {:name "New category"}
(when-let [parent (get-in req [:params "parent"])]
{:parent parent}))]}))
(-> (ruresp/created "Created.")
(ruresp/header "HX-Refresh" "true"))))
(defn- delete-category-children! [id]
(let [children (->> (sql/format {:select [:*]
:from [:categories]
:where [:= :parent id]})
(jdbc/execute! @cdb/db)
(map #(:categories/id %)))]
(doseq [child children]
(jdbc/execute! @cdb/db
(sql/format {:delete-from [:categories]
:where [:= :id child]}))
(delete-category-children! child))))
(defn delete-category [req]
(cutils/auth-only req
(if-let [id (try (Integer/parseInt (get-in req [:path-params :id]))
(catch Exception _ nil))]
(do (jdbc/execute! @cdb/db
(sql/format {:delete-from [:categories]
:where [:= :id id]}))
(delete-category-children! id)
(-> (ruresp/response "Deleted.")
(ruresp/status 200)
(ruresp/header "HX-Refresh" "true")))
(ruresp/bad-request "Bad request."))))
|