From 8e23d9dade945f87f5fc7fb15042a53a7eeb9a9e Mon Sep 17 00:00:00 2001 From: Tim Date: Sat, 14 Jun 2025 11:49:28 +0200 Subject: Refactor project structure --- src/chef/frontend/visitor/search.clj | 38 ++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 src/chef/frontend/visitor/search.clj (limited to 'src/chef/frontend/visitor/search.clj') diff --git a/src/chef/frontend/visitor/search.clj b/src/chef/frontend/visitor/search.clj new file mode 100644 index 0000000..7a2db93 --- /dev/null +++ b/src/chef/frontend/visitor/search.clj @@ -0,0 +1,38 @@ +(ns chef.frontend.visitor.search + (:require [chef.utils :as cutils] + [clojure.string :as cstr] + [hiccup2.core :as html] + [ring.util.response :as ruresp] + + [chef.logic.categories :as clcategories] + [chef.logic.recipes :as clrecipes])) + +(defn render [query category] + [:table + [:tr + [:th "Rezept"] + [:th "Kategorie"]] + (for [recipe (clrecipes/get-all-recipes) + :let [recipe-category (clcategories/get-category (:recipes/category recipe))]] + (when (or (= category -1) + (and (cstr/includes? (-> recipe + :recipes/title + cstr/lower-case) + query) + (some #(= (:categories/id %) category) + (clcategories/get-parents recipe-category)))) + [:tr + [:td + [:b [:a {:href (str "/recipes/" (:recipes/id recipe))} (:recipes/title recipe)]]] + [:td + (-> (:recipes/category recipe) + clcategories/get-category + clcategories/generate-path)]]))]) + +(defn handler [req] + (if-let [query (get-in req [:params "query"])] + (-> (render query (or (cutils/s->int-or-nil (get-in req [:params "category"])) -1)) + html/html + str + ruresp/response) + (ruresp/bad-request "No search query provide."))) -- cgit v1.2.3