new locations
This commit is contained in:
@@ -53,37 +53,28 @@
|
||||
(into [(d/db conn)] (clojure.edn/read-string (get query-params "args" "[]")))))))))
|
||||
|
||||
|
||||
(defn put-query [id body note]
|
||||
(s3/put-object :bucket-name (:data-bucket env)
|
||||
:key (str "queries/" id)
|
||||
:input-stream (io/make-input-stream (.getBytes body) {})
|
||||
:metadata {:content-type "application/text"
|
||||
:user-metadata {:note note}})
|
||||
{:body {:query body
|
||||
:id id
|
||||
:results-url (str "/api/queries/" id "/results")
|
||||
:csv-results-url (str "/api/queries/" id "/results/csv")
|
||||
:json-results-url (str "/api/queries/" id "/results/json")}})
|
||||
|
||||
(def json-routes
|
||||
(context "/queries" []
|
||||
(POST "/" {:keys [query-params identity] :as request}
|
||||
(assert-admin identity)
|
||||
(let [uuid (str (UUID/randomUUID))
|
||||
body (body-string request)]
|
||||
(s3/put-object :bucket-name (:data-bucket env)
|
||||
:key (str "queries/" uuid)
|
||||
:input-stream (io/make-input-stream (.getBytes body) {})
|
||||
:metadata {:content-type "application/text"
|
||||
:user-metadata {:note (query-params "note")}})
|
||||
{:body {:query body
|
||||
:id uuid
|
||||
:results-url (str "/api/queries/" uuid "/results")
|
||||
:csv-results-url (str "/api/queries/" uuid "/results/csv")
|
||||
:json-results-url (str "/api/queries/" uuid "/results/json")}})
|
||||
|
||||
)
|
||||
(log/info "Note" (query-params "note"))
|
||||
(put-query (str (UUID/randomUUID)) (body-string request) (query-params "note")))
|
||||
(PUT "/:query-id" {:keys [query-params identity params] :as request}
|
||||
(assert-admin identity)
|
||||
(log/info "Note" (query-params "note"))
|
||||
(let [body (body-string request)]
|
||||
(s3/put-object :bucket-name (:data-bucket env)
|
||||
:key (str "queries/" (:query-id params))
|
||||
:input-stream (io/make-input-stream (.getBytes body) {})
|
||||
:metadata {:content-type "application/text"
|
||||
:user-metadata {:note (query-params "note")}})
|
||||
{:body {:query body
|
||||
:id (:query-id params)
|
||||
:csv-results-url (str "/api/queries/" (:query-id params) "/results/csv")
|
||||
:json-results-url (str "/api/queries/" (:query-id params) "/results/json")}}))
|
||||
(put-query (:query-id params) (body-string request) (query-params "note")))
|
||||
(GET "/:query-id" {:keys [query-params identity params]}
|
||||
(assert-admin identity)
|
||||
(let [{:keys [query-id]} params
|
||||
|
||||
123
src/clj/user.clj
123
src/clj/user.clj
@@ -12,8 +12,10 @@
|
||||
[clj-time.core :as t]
|
||||
[clojure.java.io :as io]
|
||||
[clojure.string :as str]
|
||||
[auto-ap.routes.queries :as q]
|
||||
[amazonica.aws.s3 :as s3])
|
||||
(:import [org.apache.commons.io.input BOMInputStream]))
|
||||
(:import [org.apache.commons.io.input BOMInputStream]
|
||||
java.util.UUID))
|
||||
|
||||
(defn mark-until-date [client end]
|
||||
(let [conn (d/connect uri)]
|
||||
@@ -472,3 +474,122 @@
|
||||
(fn [e]
|
||||
(println "failed " e)))
|
||||
(async/<!! (async/into [] output-chan)))))
|
||||
|
||||
(def sales-summary-query
|
||||
"[:find ?d4 (sum ?total) (sum ?tax) (sum ?tip) (sum ?service-charge) (sum ?discount) (sum ?returns)
|
||||
:with ?s
|
||||
:in $
|
||||
:where
|
||||
[?s :sales-order/client [:client/code \"%s\"]]
|
||||
[?s :sales-order/date ?d]
|
||||
[?s :sales-order/total ?total]
|
||||
[?s :sales-order/tax ?tax]
|
||||
[?s :sales-order/tip ?tip]
|
||||
[?s :sales-order/service-charge ?service-charge]
|
||||
[?s :sales-order/returns ?returns]
|
||||
[?s :sales-order/discount ?discount]
|
||||
[(clj-time.coerce/to-date-time ?d) ?d2]
|
||||
[(auto-ap.time/localize ?d2) ?d3]
|
||||
[(auto-ap.time/unparse-local ?d3 auto-ap.time/normal-date) ?d4]
|
||||
]")
|
||||
|
||||
(def sales-category-query
|
||||
"[:find ?d4 ?n ?n2 (sum ?total) (sum ?tax) (sum ?discount)
|
||||
:with ?s ?li
|
||||
:in $
|
||||
:where
|
||||
[?s :sales-order/client [:client/code \"%s\"]]
|
||||
[?s :sales-order/date ?d]
|
||||
[?s :sales-order/line-items ?li]
|
||||
[?li :order-line-item/category ?n]
|
||||
[(get-else $ ?li :order-line-item/item-name "") ?n2]
|
||||
[?li :order-line-item/total ?total]
|
||||
[?li :order-line-item/tax ?tax]
|
||||
[?li :order-line-item/discount ?discount]
|
||||
[(clj-time.coerce/to-date-time ?d) ?d2]
|
||||
[(auto-ap.time/localize ?d2) ?d3]
|
||||
[(auto-ap.time/unparse-local ?d3 auto-ap.time/normal-date) ?d4]
|
||||
]")
|
||||
|
||||
(def expected-deposits-query
|
||||
"[:find ?d4 ?t ?f
|
||||
:in $
|
||||
:where
|
||||
[?c :client/code \"%s\"]
|
||||
[?s :expected-deposit/client ?c]
|
||||
[?s :expected-deposit/total ?t]
|
||||
[?s :expected-deposit/fee ?f]
|
||||
[?s :expected-deposit/sales-date ?date]
|
||||
[(clj-time.coerce/to-date-time ?date) ?d2]
|
||||
[(auto-ap.time/localize ?d2) ?d3]
|
||||
[(auto-ap.time/unparse-local ?d3 auto-ap.time/normal-date) ?d4]
|
||||
]")
|
||||
|
||||
(def tenders-query
|
||||
"[:find ?d4 ?type ?p2 (sum ?total) (sum ?tip)
|
||||
:with ?charge
|
||||
:in $
|
||||
:where
|
||||
[?c :client/code \"%s\"]
|
||||
[?s :sales-order/client ?c]
|
||||
[?s :sales-order/charges ?charge]
|
||||
[?charge :charge/type-name ?type]
|
||||
[?charge :charge/total ?total]
|
||||
[?charge :charge/tip ?tip]
|
||||
[(get-else $ ?charge :charge/processor :na) ?ccp]
|
||||
[(get-else $ ?ccp :db/ident :na) ?p]
|
||||
[(name ?p) ?p2]
|
||||
[?s :sales-order/date ?date]
|
||||
[(clj-time.coerce/to-date-time ?date) ?d2]
|
||||
[(auto-ap.time/localize ?d2) ?d3]
|
||||
[(auto-ap.time/unparse-local ?d3 auto-ap.time/normal-date) ?d4]
|
||||
]")
|
||||
|
||||
(def refunds-query
|
||||
"[:find ?d4 ?t (sum ?total) (sum ?fee)
|
||||
:with ?r
|
||||
:in $
|
||||
:where
|
||||
[?r :sales-refund/client [:client/code \"%s\"]]
|
||||
[?r :sales-refund/total ?total]
|
||||
[?r :sales-refund/fee ?fee]
|
||||
[?r :sales-refund/date ?date]
|
||||
[?r :sales-refund/type ?t]
|
||||
[(clj-time.coerce/to-date-time ?date) ?d2]
|
||||
[(auto-ap.time/localize ?d2) ?d3]
|
||||
[(auto-ap.time/unparse-local ?d3 auto-ap.time/normal-date) ?d4]]")
|
||||
|
||||
(defn setup-sales-queries [client-code]
|
||||
(let [sales-summary-id (or (first (find-queries [client-code "service-charge"]))
|
||||
(str (UUID/randomUUID)))
|
||||
sales-category-id (or (first (find-queries [client-code "item-name"]))
|
||||
(str (UUID/randomUUID)))
|
||||
expected-deposit-id (or (first (find-queries [client-code "expected-deposit"]))
|
||||
(str (UUID/randomUUID)))
|
||||
tender-id (or (first (find-queries [client-code "charge"]))
|
||||
(str (UUID/randomUUID)))
|
||||
refund-id (or (first (find-queries [client-code "sales-refund"]))
|
||||
(str (UUID/randomUUID)))]
|
||||
(map (comp :json-results-url :body)
|
||||
[(q/put-query sales-summary-id
|
||||
(format sales-summary-query client-code)
|
||||
(str "sales query for " client-code)
|
||||
)
|
||||
(q/put-query sales-category-id
|
||||
(format sales-category-query client-code)
|
||||
(str "sales category query for " client-code)
|
||||
)
|
||||
(q/put-query expected-deposit-id
|
||||
(format expected-deposits-query client-code)
|
||||
(str "expected deposit query for " client-code)
|
||||
)
|
||||
(q/put-query tender-id
|
||||
(format tenders-query client-code)
|
||||
(str "tender query for " client-code))
|
||||
|
||||
(q/put-query refund-id
|
||||
(format refunds-query client-code)
|
||||
(str "refunds query for " client-code)
|
||||
)])))
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user