cleanses user's queries.
This commit is contained in:
@@ -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)]
|
||||
|
||||
@@ -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))))
|
||||
|
||||
@@ -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]]
|
||||
|
||||
Reference in New Issue
Block a user