Adds ability for users to configure basic ezcater integration.

This commit is contained in:
2022-07-10 06:09:14 -07:00
parent a84993126b
commit 0606da9c49
12 changed files with 252 additions and 35 deletions

View File

@@ -0,0 +1,46 @@
(ns auto-ap.graphql.ezcater
(:require
[auto-ap.datomic :refer [conn]]
[auto-ap.graphql.utils :refer [assert-admin cleanse-query]]
[auto-ap.graphql.vendors :refer [partial-match-first]]
[com.walmartlabs.lacinia.util :refer [attach-resolvers]]
[datomic.api :as d]))
(defn search [context args _]
(assert-admin (:id context))
(let [search-query (cleanse-query (:query args))
data (d/q '[:find ?n ?i ?s
:in $ ?q
:where [(fulltext $ :ezcater-caterer/search-terms ?q) [[?i ?n _ ?s]]]]
(d/db conn)
search-query)]
(->> data
(sort-by (comp - last))
(partial-match-first (:query args))
(map (fn [[n i]]
{:name n
:id i})))))
(def objects
{:ezcater_caterer {:fields {:name {:type 'String}
:id {:type :id}}}})
(def queries
{:search_ezcater_caterer {:type '(list :search_result)
:args {:query {:type 'String}}
:resolve :search-ezcater-caterer}})
(def enums
{})
(def resolvers
{:search-ezcater-caterer search})
(defn attach [schema]
(->
(merge-with merge schema
{:objects objects
:queries queries
:enums enums})
(attach-resolvers resolvers)))