cleanses user's queries.

This commit is contained in:
Bryce Covert
2022-04-29 11:24:09 -07:00
parent 523afd9d37
commit 4b4246fafa
3 changed files with 19 additions and 5 deletions

View File

@@ -5,6 +5,7 @@
[auto-ap.graphql.utils
:refer [->graphql
<-graphql
cleanse-query
assert-admin
assert-can-see-client
enum->keyword
@@ -66,7 +67,8 @@
(defn search [context {query :query client :client_id} _]
(when client
(assert-can-see-client (:id context) client))
(let [num (some-> (re-find #"([0-9]+)" query)
(let [query (cleanse-query query)
num (some-> (re-find #"([0-9]+)" query)
second
(not-empty )
Integer/parseInt)]

View File

@@ -123,3 +123,14 @@
(defn assert-none-locked [client-id dates]
(doseq [d dates]
(assert-not-locked client-id d)))
(defn cleanse-query [q]
(let [parts (-> q
(str/replace #"[\[\]\+\*]" "")
(str/split #"\s+"))
exacts (butlast parts)
partial (last parts)]
(as-> exacts e
(mapv #(str "+" %) e)
(conj e (str partial "*"))
(str/join " " e))))

View File

@@ -5,6 +5,7 @@
[auto-ap.graphql.utils
:refer [->graphql
<-graphql
cleanse-query
assert-admin
assert-failure
enum->keyword
@@ -148,19 +149,19 @@
(:id args))))
(defn search [context args _]
(let [data (if (is-admin? (:id context))
(let [search-query (cleanse-query (:query args))
data (if (is-admin? (:id context))
(d/q '[:find ?n ?i ?s
:in $ ?q
:where [(fulltext $ :vendor/search-terms ?q) [[?i ?n _ ?s]]]]
(d/db conn)
(:query args))
search-query)
(d/q '[:find ?n ?i ?s
:in $ ?q
:where [(fulltext $ :vendor/search-terms ?q) [[?i ?n _ ?s]]]
(not [?i :vendor/hidden true])]
(d/db conn)
(:query args)))]
search-query))]
(->> data
(sort-by (comp - last))
(map (fn [[n i]]