From ea7b0078478ba7925f2db3cb1fa038e8a3d85ab8 Mon Sep 17 00:00:00 2001 From: Tim <contact@bytim.eu> Date: Fri, 30 May 2025 17:09:57 +0200 Subject: Add features to manage recipes in admin interface --- src/chef/pages/admin/api.clj | 36 +++++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) (limited to 'src/chef/pages/admin/api.clj') diff --git a/src/chef/pages/admin/api.clj b/src/chef/pages/admin/api.clj index ff11672..8b2723a 100644 --- a/src/chef/pages/admin/api.clj +++ b/src/chef/pages/admin/api.clj @@ -37,7 +37,6 @@ :where [:= :id id]})) (delete-category-children! id) (-> (ruresp/response "Deleted.") - (ruresp/status 200) (ruresp/header "HX-Refresh" "true")))) (ruresp/bad-request "Bad request.")))) @@ -55,3 +54,38 @@ :where [:= :id id]}))) (ruresp/response "Updated.")) (ruresp/bad-request "Bad request.")))) + +(defn create-recipe [req] + (cutils/auth-only req + (jdbc/execute! @cdb/db + (sql/format {:insert-into [:recipes] + :values [{:title "New recipe"}]})) + (-> (ruresp/created "Created.") + (ruresp/header "HX-Refresh" "true")))) + +(defn delete-recipe [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 [:recipes] + :where [:= :id id]})) + (-> (ruresp/response "Deleted.") + (ruresp/header "HX-Refresh" "true"))) + (ruresp/bad-request "Bad request.")))) + +;;TODO: validate request +(defn edit-recipe [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 {:update :recipes + :set {:title (get-in req [:params "title"]) + :category (get-in req [:params "category"]) + :unit (get-in req [:params "ingredients-unit"]) + :ingredients (get-in req [:params "ingredients"]) + :preparation (get-in req [:params "preparation"])} + :where [:= :id id]})) + (ruresp/response "Saved.")) + (ruresp/bad-request "Bad request.")))) -- cgit v1.2.3