Everything should be migrated over great

This commit is contained in:
2023-09-28 22:42:21 -07:00
parent feee10e847
commit 1320667e69
4 changed files with 137 additions and 173 deletions

View File

@@ -1,69 +0,0 @@
(ns auto-ap.datomic.yodlee2
(:require
[auto-ap.datomic
:refer [add-sorter-fields
apply-pagination
apply-sort-3
conn
merge-query
pull-many
query2]]
[auto-ap.graphql.utils :refer [extract-client-ids]]
[clj-time.coerce :as c]
[datomic.api :as dc]))
(def default-read '[* {:yodlee-provider-account/client [:client/code]}])
(defn <-datomic [x]
(-> x (update :yodlee-provider-account/last-updated c/from-date)))
(defn raw-graphql-ids [db args]
(let [valid-clients (extract-client-ids (:clients args)
(:client-id args)
(when (:client-code args)
[:client/code (:client-code args)]))]
(->> (cond-> {:query {:find []
:in ['$ '[?xx ...]]
:where ['[?e :yodlee-provider-account/id]
'[?e :yodlee-provider-account/client ?xx]]}
:args [db valid-clients]}
(:client-id args)
(merge-query {:query {:in ['?client-id]
:where ['[?e :yodlee-provider-account/client ?client-id]]}
:args [ (:client-id args)]})
(:client-code args)
(merge-query {:query {:in ['?client-code]
:where ['[?e :yodlee-provider-account/client ?client-id]
'[?client-id :client/code ?client-code]]}
:args [ (:client-code args)]})
(:sort args) (add-sorter-fields {"status" ['[?e :yodlee-provider-account/status ?sort-status]]
"last-updated" ['[?e :yodlee-provider-account/last-updated ?sort-last-updated]]}
args)
true
(merge-query {:query {:find ['?e ]
:where ['[?e :yodlee-provider-account/id]]}}) )
(query2)
(apply-sort-3 args)
(apply-pagination args))))
(defn graphql-results [ids db _]
(let [results (->> (pull-many db default-read ids)
(group-by :db/id))]
(->> ids
(map results)
(map first)
(mapv <-datomic))))
(defn get-graphql [args]
(let [db (dc/db conn)
{ids-to-retrieve :ids matching-count :count} (raw-graphql-ids db args)]
[(->> (graphql-results ids-to-retrieve db args))
matching-count]))

View File

@@ -44,75 +44,32 @@
client-id
vendor-id)))
(defn get-1099-companies [user {:keys [clients] :as args}]
(let [valid-clients (extract-client-ids (:clients args)
(:client-id args)
(when (:client-code args)
[:client/code (:client-code args)]))
results (cond
clients
(dc/q '[:find
(pull ?c [:client/code :db/id])
(pull ?v vendor-read)
(sum ?a)
:with ?d
:in $ [?c ...] vendor-read
:where
[?p :payment/client ?c]
[?p :payment/date ?d ]
[(>= ?d #inst "2022-01-01T08:00")]
[(< ?d #inst "2023-01-01T08:00")]
[?p :payment/type :payment-type/check]
[?p :payment/amount ?a]
[?p :payment/vendor ?v]]
(dc/db conn)
valid-clients
vendor-read)
(is-admin? user)
(dc/q '[:find
(pull ?c [:client/code :db/id])
(pull ?v vendor-read)
(sum ?a)
:with ?d
:in $ vendor-read
:where
[?p :payment/date ?d ]
[(>= ?d #inst "2022-01-01T08:00")]
[(< ?d #inst "2023-01-01T08:00")]
[?p :payment/type :payment-type/check]
[?p :payment/client ?c]
[?p :payment/amount ?a]
[?p :payment/vendor ?v]]
(dc/db conn)
vendor-read)
:else
(dc/q '[:find
(pull ?c [:client/code :db/id])
(pull ?v vendor-read)
(sum ?a)
:with ?d
:in $ [?c ...] vendor-read
:where
[?p :payment/client ?c]
[?p :payment/date ?d ]
[(>= ?d #inst "2022-01-01T08:00")]
[(< ?d #inst "2023-01-01T08:00")]
[?p :payment/type :payment-type/check]
[?p :payment/amount ?a]
[?p :payment/vendor ?v]]
(dc/db conn)
valid-clients
vendor-read))
(defn fetch-page [{:keys [trimmed-clients parsed-query-params] :as request user :identity}]
(let [results (dc/q '[:find
(pull ?c [:client/code :db/id])
(pull ?v vendor-read)
(sum ?a)
:with ?d
:in $ [?c ...] vendor-read
:where
[?p :payment/client ?c]
[?p :payment/date ?d ]
[(>= ?d #inst "2022-01-01T08:00")]
[(< ?d #inst "2023-01-01T08:00")]
[?p :payment/type :payment-type/check]
[?p :payment/amount ?a]
[?p :payment/vendor ?v]]
(dc/db conn)
trimmed-clients
vendor-read)
all (->> results
(filter (fn [[_ _ a]]
(>= (or a 0.0) 600.0)))
(sort-by (fn [[client _ amount]]
[(:client/code client ) amount]))
(into []))
paginated (apply-pagination-raw {:start (:start (:parsed-query-params args))
:per-page (:per-page (:parsed-query-params args))} all)]
paginated (apply-pagination-raw {:start (:start parsed-query-params)
:per-page (:per-page parsed-query-params)} all)]
[(:entries paginated) (:count paginated)]))
(def grid-page
@@ -120,9 +77,7 @@
{:id "vendor-table"
:nav (com/company-aside-nav)
:id-fn (comp :db/id second)
:fetch-page (fn [user args]
(get-1099-companies user args)
#_(r/get-graphql (into args {:id user})))
:fetch-page fetch-page
:breadcrumbs [[:a {:href (bidi/path-for ssr-routes/only-routes
:company)}
"My Company"]
@@ -133,9 +88,7 @@
:title "1099 Vendors"
:entity-name "Vendors"
:route :company-1099-vendor-table
:action-buttons (fn [user _]
nil)
:row-buttons (fn [user e]
:row-buttons (fn [request e]
[(com/icon-button {:hx-get (str (bidi/path-for ssr-routes/only-routes
:company-1099-vendor-dialog
:vendor-id (:db/id (second e)))

View File

@@ -1,7 +1,14 @@
(ns auto-ap.ssr.company.reports
(:require
[amazonica.aws.s3 :as s3]
[auto-ap.datomic :refer [conn]]
[auto-ap.datomic
:refer [add-sorter-fields
apply-pagination
apply-sort-3
conn
merge-query
pull-many
query2]]
[auto-ap.datomic.reports :as r]
[auto-ap.graphql.utils :refer [assert-can-see-client is-admin?]]
[auto-ap.ssr-routes :as ssr-routes]
@@ -11,22 +18,61 @@
[auto-ap.ssr.utils :refer [html-response]]
[auto-ap.time :as atime]
[bidi.bidi :as bidi]
[clojure.set :as set]
[config.core :refer [env]]
[datomic.api :as dc]
[com.brunobonacci.mulog :as mu]))
[datomic.api :as dc]))
(def default-read '[:db/id :report/client [:report/created :xform clj-time.coerce/from-date] :report/url :report/name :report/creator])
(defn fetch-ids [db request]
(let [query-params (:parsed-query-params request)
query (cond-> {:query {:find []
:in '[$ [?c ...]]
:where '[[?e :report/client ?c]]}
:args [db (:trimmed-clients request)]}
(:sort query-params) (add-sorter-fields {"client" ['[?e :report/client ?c]
'[?c :client/name ?sort-client]]
"created" ['[?e :report/created ?sort-created]]
"creator" ['[?e :report/creator ?sort-creator]]
"name" ['[?e :report/name ?sort-name]
]}
query-params)
true
(merge-query {:query {:find ['?sort-default '?e] :where ['[?e :report/created ?sort-default]]}}))]
(->> (query2 query)
(apply-sort-3 (update query-params :sort conj {:sort-key "default-2" :asc true}))
(apply-pagination query-params))))
(defn hydrate-results [ids db request]
(let [results (->> (pull-many db default-read ids)
(group-by :db/id))
valid-clients (:trimmed-clients request)]
(->> ids
(map results)
(filter identity)
(map first)
(filter (fn [r]
(let [used-clients (set (map :db/id (:report/client r)))]
(= used-clients
(set/intersection valid-clients
used-clients))))))))
(defn fetch-page [args]
(let [db (dc/db conn)
{ids-to-retrieve :ids matching-count :count} (fetch-ids db args)]
[(->> (hydrate-results ids-to-retrieve db args))
matching-count]))
(def grid-page
(helper/build {:id "report-table"
:nav (com/company-aside-nav)
:id-fn :db/id
:fetch-page (fn [user args]
(prn args)
(r/get-graphql {:client (:client args)
:clients (:clients args)
:start (:start (:parsed-query-params args))
:per-page (:per-page (:parsed-query-params args))
:sort (:sort (:parsed-query-params args))
}))
:fetch-page fetch-page
:breadcrumbs [[:a {:href (bidi/path-for ssr-routes/only-routes
:company)}
"My Company"]
@@ -37,17 +83,15 @@
:title "Reports"
:entity-name "Reports"
:route :company-reports-table
:action-buttons (fn [user _]
nil)
:row-buttons (fn [user e]
(com/a-icon-button {:href (:report/url e)}
svg/download)[
(when (is-admin? user)
(com/icon-button {:hx-delete (str (bidi/path-for ssr-routes/only-routes
:company-reports-delete
:request-method :delete))
:hx-target "closest tr"}
svg/trash))])
:row-buttons (fn [request e]
[(com/a-icon-button {:href (:report/url e)}
svg/download)
(when (is-admin? (:identity request))
(com/icon-button {:hx-delete (str (bidi/path-for ssr-routes/only-routes
:company-reports-delete
:request-method :delete))
:hx-target "closest tr"}
svg/trash))])
:headers [{:key "name"
:name "Name"
:sort-key "name"

View File

@@ -1,7 +1,14 @@
(ns auto-ap.ssr.company.yodlee
(:require
[auto-ap.datomic :refer [conn pull-attr]]
[auto-ap.datomic.yodlee2 :as yodlee2]
[auto-ap.datomic
:refer [add-sorter-fields
apply-pagination
apply-sort-3
conn
merge-query
pull-attr
pull-many
query2]]
[auto-ap.graphql.utils :refer [is-admin?]]
[auto-ap.ssr-routes :as ssr-routes]
[auto-ap.ssr.components :as com]
@@ -16,15 +23,51 @@
[hiccup2.core :as hiccup]))
(def default-read '[:db/id
:yodlee-provider-account/last-updated
[:yodlee-provider-account/last-updated :xform clj-time.coerce/from-date]
:yodlee-provider-account/status
:yodlee-provider-account/id
:yodlee-provider-account/detailed-status
{:yodlee-provider-account/accounts [:yodlee-account/name :yodlee-account/number]
:yodlee-provider-account/client [:client/code]}])
:yodlee-provider-account/client [:client/code]}])
(defn fetch-ids [db request]
(let [query-params (:parsed-query-params request)]
(->> (cond-> {:query {:find []
:in ['$ '[?xx ...]]
:where ['[?e :yodlee-provider-account/id]
'[?e :yodlee-provider-account/client ?xx]]}
:args [db (:trimmed-clients request)]}
(:sort query-params) (add-sorter-fields {"status" ['[?e :yodlee-provider-account/status ?sort-status]]
"last-updated" ['[?e :yodlee-provider-account/last-updated ?sort-last-updated]]}
query-params)
true
(merge-query {:query {:find ['?e ]
:where ['[?e :yodlee-provider-account/id]]}}))
(query2)
(apply-sort-3 query-params)
(apply-pagination query-params))))
(defn hydrate-results [ids db _]
(let [results (->> (pull-many db default-read ids)
(group-by :db/id))]
(->> ids
(map results)
(map first))))
(defn fetch-page [request]
(let [db (dc/db conn)
{ids-to-retrieve :ids matching-count :count} (fetch-ids db request)]
[(->> (hydrate-results ids-to-retrieve db request))
matching-count]))
(defn fastlink-dialog [{:keys [client]}]
(html-response
(com/modal
@@ -85,14 +128,7 @@ fastlink.open({fastLinkURL: '%s',
{:id "yodlee-table"
:nav (com/company-aside-nav)
:id-fn :db/id
:fetch-page (fn [request]
(println (count (:clients request)))
(yodlee2/get-graphql
{:client (:client request)
:clients (:clients request)
:sort (:sort (:parsed-query-params request))
:start (:start (:parsed-query-params request))
:per-page (:per-page (:parsed-query-params request))}))
:fetch-page fetch-page
:breadcrumbs [[:a {:href (bidi/path-for ssr-routes/only-routes
:company)}
"My Company"]