From 406cddf6e67bb192acb108d5e58632f0385656a4 Mon Sep 17 00:00:00 2001 From: Bryce Covert Date: Wed, 5 Apr 2023 14:42:25 -0700 Subject: [PATCH] setup for clients moving much faster --- iol_ion/src/iol_ion/query.clj | 20 ++++++++- src/clj/auto_ap/graphql/clients.clj | 63 +++++++++++++++-------------- things-to-search-for.txt | 2 + 3 files changed, 53 insertions(+), 32 deletions(-) diff --git a/iol_ion/src/iol_ion/query.clj b/iol_ion/src/iol_ion/query.clj index 8e80d3f1..a0950046 100644 --- a/iol_ion/src/iol_ion/query.clj +++ b/iol_ion/src/iol_ion/query.clj @@ -1,5 +1,7 @@ (ns iol-ion.query - (:require [clj-time.core :as time])) + (:require [clj-time.core :as time] + [clj-time.coerce :as coerce] + [clj-time.format :as f])) #_{:clj-kondo/ignore [:clojure-lsp/unused-public-var]} (defn dollars-0? [amt] @@ -9,5 +11,19 @@ (defn dollars= [amt1 amt2] (dollars-0? (- amt1 amt2) )) +(defn localize [d] + (time/to-time-zone d (time/time-zone-for-id "America/Los_Angeles"))) + (defn local-now [] - (time/to-time-zone (time/now) (time/time-zone-for-id "America/Los_Angeles"))) + (localize (time/now))) + + +(defn recent-date [] + (coerce/to-date (time/minus (local-now) (time/days 90)))) + +(def excel-formatter (f/with-zone (f/formatter "MM/dd/yyyy") (time/time-zone-for-id "America/Los_Angeles"))) +(defn excel-date [d] + (->> d + (coerce/to-date-time) + localize + (f/unparse excel-formatter ))) diff --git a/src/clj/auto_ap/graphql/clients.clj b/src/clj/auto_ap/graphql/clients.clj index ae0b416a..8b98e78b 100644 --- a/src/clj/auto_ap/graphql/clients.clj +++ b/src/clj/auto_ap/graphql/clients.clj @@ -225,8 +225,8 @@ :with ?s :in $ :where + [(ground (iol-ion.query/recent-date)) ?min-d] [?s :sales-order/client [:client/code \"%s\"]] -[(ground (clj-time.coerce/to-date (clj-time.core/minus (auto-ap.time/local-now) (clj-time.core/days 90)))) ?min-d] [?s :sales-order/date ?d] [(>= ?d ?min-d)] [?s :sales-order/total ?total] @@ -235,9 +235,7 @@ [?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] +[(iol-ion.query/excel-date ?d) ?d4] ]") (def sales-category-query @@ -245,8 +243,8 @@ :with ?s ?li :in $ :where + [(ground (iol-ion.query/recent-date)) ?min-d] [?s :sales-order/client [:client/code \"%s\"]] - [(ground (clj-time.coerce/to-date (clj-time.core/minus (auto-ap.time/local-now) (clj-time.core/days 90)))) ?min-d] [?s :sales-order/date ?d] [(>= ?d ?min-d)] [?s :sales-order/line-items ?li] @@ -255,23 +253,22 @@ [?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] + +[(iol-ion.query/excel-date ?d) ?d4] ]") (def expected-deposits-query "[:find ?d4 ?t ?f :in $ :where +[(ground (iol-ion.query/recent-date)) ?min-d] [?c :client/code \"%s\"] [?s :expected-deposit/client ?c] +[?s :expected-deposit/sales-date ?date] +[(>= ?date ?min-d)] [?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] +[(iol-ion.query/excel-date ?date) ?d4] ]") (def tenders-query @@ -279,9 +276,9 @@ :with ?charge :in $ :where - [?c :client/code \"%s\"] +[(ground (iol-ion.query/recent-date)) ?min-d] +[?c :client/code \"%s\"] [?s :sales-order/client ?c] -[(ground (clj-time.coerce/to-date (clj-time.core/minus (auto-ap.time/local-now) (clj-time.core/days 90)))) ?min-d] [?s :sales-order/date ?date] [(>= ?date ?min-d)] [?s :sales-order/charges ?charge] @@ -291,9 +288,7 @@ [(get-else $ ?charge :charge/processor :na) ?ccp] [(get-else $ ?ccp :db/ident :na) ?p] [(name ?p) ?p2] -[(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] +[(iol-ion.query/excel-date ?date) ?d4] ]") (def tenders2-query @@ -301,8 +296,8 @@ :with ?charge :in $ :where + [(ground (iol-ion.query/recent-date)) ?min-d] [?charge :charge/date ?date] - [(ground (clj-time.coerce/to-date (clj-time.core/minus (auto-ap.time/local-now) (clj-time.core/days 90)))) ?min-d] [(>= ?date ?min-d)] [?charge :charge/client ?c] [?c :client/code \"%s\"] @@ -320,30 +315,28 @@ [(get-else $ ?ccp :db/ident :na) ?p] )) [(name ?p) ?p2] - [(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]]" ) + [(iol-ion.query/excel-date ?date) ?d4] +" ) (def refunds-query "[:find ?d4 ?t (sum ?total) (sum ?fee) :with ?r :in $ :where + [(ground (iol-ion.query/recent-date)) ?min-d] [?r :sales-refund/client [:client/code \"%s\"]] +[?r :sales-refund/date ?date] +[(>= ?date ?min-d)] [?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]]") +[(iol-ion.query/excel-date ?date) ?d4] +]") - -(defn setup-sales-queries [context args _] - (assert-admin (:id context)) -(let [{client-code :client/code feature-flags :client/feature-flags} (dc/pull (dc/db conn) '[:client/code :client/feature-flags] (:client_id args)) - is-new-square? ((set feature-flags) "new-square")] +(defn setup-sales-queries-impl [client-id] + (let [{client-code :client/code feature-flags :client/feature-flags} (dc/pull (dc/db conn) '[:client/code :client/feature-flags] client-id) + is-new-square? ((set feature-flags) "new-square")] (q/put-query (str (UUID/randomUUID)) (format sales-summary-query client-code) (str "sales query for " client-code) @@ -389,6 +382,16 @@ (str "Refund: " "https://app.integreatconsult.com/api/queries/" refund-id "/results/json")])}))) +(defn setup-sales-queries [context args _] + (assert-admin (:id context)) + (setup-sales-queries-impl (:client_id args))) + + +(defn reset-all-queries [] + (doseq [[c] (dc/q '[:find ?c :where [?c :client/code]] (dc/db conn))] + (setup-sales-queries-impl c))) + + (def objects {:location_match {:fields {:location {:type 'String} diff --git a/things-to-search-for.txt b/things-to-search-for.txt index 75044f15..c58e45fa 100644 --- a/things-to-search-for.txt +++ b/things-to-search-for.txt @@ -35,6 +35,7 @@ Release steps: Set prod web workers to 0 Make database snapshot (run export-job) +run link_sales_queries again to make sure sales queries are linked (ecs/run-task (cond-> {:capacity-provider-strategy [{:base 1 :weight 1 :capacity-provider "FARGATE_SPOT"}] :count 1 :cluster "default" @@ -67,6 +68,7 @@ Merge branch into master Rename prod-cloud to prod everywhere Release again git push deploy master +regenerate all sales queries