From 3c4f9feb1a9ef05f1175c3cd6c16081e4ebabd4b Mon Sep 17 00:00:00 2001
From: Tim <contact@bytim.eu>
Date: Sun, 25 May 2025 16:49:24 +0200
Subject: Store root question in db

---
 src/chef/pages/admin.clj | 39 ++++++++++++++++++++++++---------------
 1 file changed, 24 insertions(+), 15 deletions(-)

(limited to 'src/chef/pages')

diff --git a/src/chef/pages/admin.clj b/src/chef/pages/admin.clj
index 031da8c..859dda4 100644
--- a/src/chef/pages/admin.clj
+++ b/src/chef/pages/admin.clj
@@ -9,28 +9,35 @@
 (defn- render-category [data children]
   [:li
    [:p {:style {:display :inline-block}}
-    (if (some? data)
+    (if (pos? (:categories/id data))
       [:input {:type       :text :placeholder "Name"
                :value      (:categories/name data)
                :name       "name"
                :hx-post    (str "/api/admin/edit-category/" (:categories/id data))
                :hx-trigger "change"}]
       "Startseite")]
-   [:p {:style {:display      :inline-block
-                :margin-left  "1em"
-                :margin-right "1em"}} "->"]
-   [:input {:type       :text :placeholder "Frage"
-            :style      {:display :inline-block
-                         :width   :auto}
-            :value      (:categories/question data)
-            :name       "question"
-            :hx-post    (str "/api/admin/edit-category/" (:categories/id data))
-            :hx-trigger "change"}]                          ; TODO: only show when category has children
+   (when (or (neg? (:categories/id data))
+             (->> (sql/format {:select [:*]
+                               :from   [:categories]
+                               :where  [:= :parent (:categories/id data)]})
+                  (jdbc/execute! @cdb/db)
+                  count
+                  pos?))
+     (list [:p {:style {:display      :inline-block
+                        :margin-left  "1em"
+                        :margin-right "1em"}} "->"]
+           [:input {:type       :text :placeholder "Frage"
+                    :style      {:display :inline-block
+                                 :width   :auto}
+                    :value      (:categories/question data)
+                    :name       "question"
+                    :hx-post    (str "/api/admin/edit-category/" (:categories/id data))
+                    :hx-trigger "change"}]))
    [:img {:src     "/static/icons/plus.svg" :height "30em"
           :style   {:vertical-align :middle
                     :margin-left    "1em"}
           :hx-post (str "/api/admin/create-category"
-                        (when (some? data) (str "?parent=" (:categories/id data))))
+                        (when (pos? (:categories/id data)) (str "?parent=" (:categories/id data))))
           :hx-swap "none"}]
    [:img {:src       "/static/icons/trash.svg" :height "30em"
           :style     {:vertical-align :middle
@@ -48,12 +55,14 @@
   (cutils/gen-page "chef - Admin"
                    [:h1 "chef - Admin"]
                    [:h2 "Kategorien"]
-                   ;;TODO: add delete icons to non-root categories
                    [:ul
-                    (render-category nil
+                    (render-category (first (->> (sql/format {:select [:*]
+                                                              :from   [:categories]
+                                                              :where  [:= :id -1]})
+                                                 (jdbc/execute! @cdb/db)))
                                      (->> (sql/format {:select [:*]
                                                        :from   [:categories]
-                                                       :where  [:is :parent :null]})
+                                                       :where  [:and [:is :parent :null] [:> :id 0]]})
                                           (jdbc/execute! @cdb/db)))]
                    [:h2 "Rezepte"]
                    [:i "Coming soon..."]))
-- 
cgit v1.2.3