108 lines
4.1 KiB
Clojure
108 lines
4.1 KiB
Clojure
(ns auto-ap.graphql.sales-orders
|
|
(:require [auto-ap.datomic.sales-orders :as d-sales-orders2]
|
|
[auto-ap.graphql.utils :refer [->graphql <-graphql result->page assert-admin] ]
|
|
[com.walmartlabs.lacinia.util :refer [attach-resolvers]]
|
|
[auto-ap.graphql.utils :refer [attach-tracing-resolvers]]))
|
|
|
|
(defn get-sales-orders-page [context args _]
|
|
(let [args (assoc args :clients (:clients context))
|
|
[sales-orders sales-orders-count {:keys [total tax]}] (d-sales-orders2/get-graphql (<-graphql args))]
|
|
(assoc (result->page sales-orders sales-orders-count :sales_orders args)
|
|
:sales_order_total total
|
|
:sales_order_tax tax)))
|
|
|
|
(defn get-all-sales-orders [context args _]
|
|
(assert-admin (:id context))
|
|
(map
|
|
->graphql
|
|
(first (d-sales-orders2/get-graphql (assoc (<-graphql args) :count Integer/MAX_VALUE)))))
|
|
|
|
|
|
(def objects
|
|
{:sales_order_page
|
|
{:fields {:sales_orders {:type '(list :sales_order)}
|
|
:count {:type 'Int}
|
|
:total {:type 'Int}
|
|
:start {:type 'Int}
|
|
:end {:type 'Int}
|
|
:sales_order_total {:type :money}
|
|
:sales_order_tax {:type :money}}}
|
|
|
|
:sales_order
|
|
{:fields {:id {:type :id}
|
|
:location {:type 'String}
|
|
:external_id {:type 'String}
|
|
:reference_link {:type 'String}
|
|
:source {:type 'String}
|
|
:total {:type :money}
|
|
:tip {:type :money}
|
|
:tax {:type :money}
|
|
:discount {:type :money}
|
|
:service_charge {:type :money}
|
|
:returns {:type :money}
|
|
:client {:type :client}
|
|
:date {:type 'String}
|
|
:charges {:type '(list :charge)}
|
|
:line_items {:type '(list :order_line_item)}}}
|
|
|
|
:order_line_item
|
|
{:fields {:id {:type :id}
|
|
:item_name {:type 'String}
|
|
:total {:type :money}
|
|
:tax {:type :money}
|
|
:category {:type 'String}
|
|
:discount {:type :money}}}
|
|
:charge
|
|
{:fields {:id {:type :id}
|
|
:processor {:type :processor}
|
|
:reference_link {:type 'String}
|
|
:note {:type 'String}
|
|
:type_name {:type 'String}
|
|
:total {:type :money}
|
|
:tip {:type :money}
|
|
:expected_deposit {:type :expected_deposit}}}})
|
|
|
|
(def queries
|
|
{:all_sales_orders {:type '(list :sales_order)
|
|
:args {:client_id {:type :id}
|
|
:date_range {:type :date_range}
|
|
:client_code {:type 'String}}
|
|
:resolve :get-all-sales-orders}
|
|
|
|
:sales_order_page {:type :sales_order_page
|
|
:args {:client_id {:type :id}
|
|
:date_range {:type :date_range}
|
|
:total_lte {:type :money}
|
|
:total_gte {:type :money}
|
|
:type_name {:type 'String}
|
|
:processor {:type :processor}
|
|
:category {:type 'String}
|
|
:start {:type 'Int}
|
|
:per_page {:type 'Int}
|
|
:sort {:type '(list :sort_item)}}
|
|
:resolve :get-sales-order-page}})
|
|
|
|
(def mutations
|
|
{})
|
|
|
|
(def input-objects
|
|
{})
|
|
|
|
(def enums
|
|
{})
|
|
|
|
(def resolvers
|
|
{:get-all-sales-orders get-all-sales-orders
|
|
:get-sales-order-page get-sales-orders-page
|
|
})
|
|
|
|
(defn attach [schema]
|
|
(->
|
|
(merge-with merge schema
|
|
{:objects objects
|
|
:queries queries
|
|
:mutations mutations
|
|
:input-objects input-objects
|
|
:enums enums})
|
|
(attach-tracing-resolvers resolvers)))
|