supports filtering down to just duplicates.
This commit is contained in:
@@ -18,15 +18,40 @@
|
||||
:else
|
||||
(keyword "transaction" sort-by)))
|
||||
|
||||
(defn potential-duplicate-ids [db args]
|
||||
(if (and (:potential-duplicates args)
|
||||
(:bank-account-id args))
|
||||
(->> (d/q '[:find ?tx ?amount ?date
|
||||
:in $ ?ba
|
||||
:where
|
||||
[?tx :transaction/bank-account ?ba]
|
||||
[?tx :transaction/amount ?amount]
|
||||
[?tx :transaction/date ?date]]
|
||||
db
|
||||
(:bank-account-id args))
|
||||
(group-by (fn [[tx amount date]]
|
||||
[amount date]))
|
||||
(filter (fn [[g txes]]
|
||||
(> (count txes) 1)))
|
||||
|
||||
(vals)
|
||||
(mapcat identity)
|
||||
(map first)
|
||||
set)))
|
||||
|
||||
|
||||
(defn raw-graphql-ids
|
||||
([args] (raw-graphql-ids (d/db (d/connect uri)) args))
|
||||
([args] (raw-graphql-ids (d/db conn) args))
|
||||
([db args]
|
||||
(let [query (cond-> {:query {:find []
|
||||
(let [potential-duplicates (potential-duplicate-ids db args)
|
||||
query (cond-> {:query {:find []
|
||||
:in ['$ ]
|
||||
:where []}
|
||||
:args [db]}
|
||||
|
||||
(:potential-duplicates args)
|
||||
(merge-query {:query {:in '[[?e ...]]}
|
||||
:args [potential-duplicates]})
|
||||
|
||||
(:exact-match-id args)
|
||||
(merge-query {:query {:in ['?e]
|
||||
|
||||
Reference in New Issue
Block a user