supports filtering down to just duplicates.

This commit is contained in:
Bryce Covert
2021-12-23 10:38:07 -08:00
parent 0aa92c3c93
commit 4da3789569
6 changed files with 234 additions and 138 deletions

View File

@@ -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]