Should fix most of the authentication issues

This commit is contained in:
2023-09-05 23:08:22 -07:00
parent a6e4080746
commit a56d3b0b84
22 changed files with 506 additions and 179 deletions

View File

@@ -6,13 +6,12 @@
apply-sort-3
conn
merge-query
pull-many
query2]]
observable-query
pull-many]]
[auto-ap.datomic.accounts :as d-accounts]
[auto-ap.graphql.utils :refer [limited-clients]]
[auto-ap.graphql.utils :refer [extract-client-ids]]
[clj-time.coerce :as coerce]
[clojure.string :as str]
[clojure.tools.logging :as log]
[datomic.api :as dc]))
(defn potential-duplicate-ids [db args]
@@ -41,7 +40,11 @@
(defn raw-graphql-ids
([args] (raw-graphql-ids (dc/db conn) args))
([db args]
(let [potential-duplicates (potential-duplicate-ids db args)
(let [valid-clients (extract-client-ids (:clients args)
(:client-id args)
(when (:client-code args)
[:client/code (:client-code args)]))
potential-duplicates (potential-duplicate-ids db args)
query
(if (:exact-match-id args)
(cond-> {:query {:find '[?e]
@@ -49,21 +52,19 @@
:where '[[?e :transaction/client ?c]]}
:args [db
(:exact-match-id args)
(map :db/id (:clients args))]})
valid-clients]})
(cond-> {:query {:find []
:in ['$ ]
:where []}
:args [db]}
:in '[$ [?clients ?start ?end]]
:where '[[(iol-ion.query/scan-transactions $ ?clients ?start ?end) [[?e _ ?sort-default] ...]]]}
:args [db
[valid-clients
(some-> (:start (:date-range args)) coerce/to-date)
(some-> (:end (:date-range args)) coerce/to-date)]]}
(:potential-duplicates args)
(merge-query {:query {:in '[[?e ...]]}
:args [potential-duplicates]})
true
(merge-query {:query {:in ['[?xx ...]]
:where ['[?e :transaction/client ?xx]]}
:args [(set (map :db/id (:clients args)))]})
(:bank-account-id args)
(merge-query {:query {:in ['?bank-account-id]
:where ['[?e :transaction/bank-account ?bank-account-id]]}
@@ -80,11 +81,6 @@
'[?accounts :transaction-account/account ?account-id]]}
:args [(:account-id args)]})
(:client-id args)
(merge-query {:query {:in ['?client-id]
:where ['[?e :transaction/client ?client-id]]}
:args [(:client-id args)]})
(:vendor-id args)
(merge-query {:query {:in ['?vendor-id]
:where ['[?e :transaction/vendor ?vendor-id]]}
@@ -103,29 +99,11 @@
'[(<= ?a ?amount-lte)]]}
:args [(:amount-lte args)]})
(:start (:date-range args))
(merge-query {:query {:in ['?start-date]
:where ['[?e :transaction/date ?date]
'[(>= ?date ?start-date)]]}
:args [(coerce/to-date (:start (:date-range args)))]})
(:end (:date-range args))
(merge-query {:query {:in ['?end-date]
:where ['[?e :transaction/date ?date]
'[(<= ?date ?end-date)]]}
:args [(coerce/to-date (:end (:date-range args)))]})
(:approval-status args)
(merge-query {:query {:in ['?approval-status]
:where ['[?e :transaction/approval-status ?approval-status]]}
:args [(:approval-status args)]})
(:client-code args)
(merge-query {:query {:in ['?client-code]
:where ['[?e :transaction/client ?client-id]
'[?client-id :client/code ?client-code]]}
:args [(:client-code args)]})
(:original-id args)
(merge-query {:query {:in ['?original-id]
:where ['[?e :transaction/client ?c]
@@ -174,10 +152,8 @@
true
(merge-query {:query {:find ['?sort-default '?e]
:where ['[?e :transaction/id]
'[?e :transaction/date ?sort-default]
'(not [?e :transaction/approval-status :transaction-approval-status/suppressed])]}})))]
(log/info "query is" query)
(cond->> (query2 query)
(cond->> (observable-query query)
true (apply-sort-3 (assoc args :default-asc? false))
true (apply-pagination args)))))