the most boring thing about lacinia is mapping resolvers, I always forget something. Is there any way to map it automatic using somekind of metadata stuff? Like (defn ^{:resolver :query/something} something ...) ?
I solved it with anything named *.resolver.* like:
(defn ^{:resolver :query/todas_empresas} todas-empresas []
(fn [_ _ _]
"OK"))
with
{:queries
{:todas_empresas
{:type :String
:resolve :query/todas_empresas}}}
(defn filter-resolver [functions]
(->>
(filter
(fn [v] (contains? (meta v) :resolver))
(vals (ns-publics functions)))
(reduce #(conj %1 {(-> (meta %2) :resolver) (%2)}) {})))
(defn get-all-resovers []
(->>
(all-ns)
(map ns-name)
(filter #(.contains (name %) "resolvers"))
(reduce #(conj %1 (filter-resolver %2)) {})))
(defn- configurar-schema [arquivo-esquema]
(-> (io/resource arquivo-esquema)
slurp
edn/read-string
(util/attach-resolvers (get-all-resovers))
schema/compile))