much better sorting.

This commit is contained in:
Bryce Covert
2020-04-25 16:21:36 -07:00
parent a8736f351e
commit d799fc469d
17 changed files with 294 additions and 219 deletions

View File

@@ -1,6 +1,6 @@
(ns auto-ap.datomic.checks
(:require [datomic.api :as d]
[auto-ap.datomic :refer [uri merge-query apply-sort-2 apply-pagination add-sorter-field]]
[auto-ap.datomic :refer [uri merge-query apply-sort-3 apply-pagination add-sorter-fields]]
[auto-ap.graphql.utils :refer [limited-clients]]
[auto-ap.utils :refer [dollars=]]
[clojure.set :refer [rename-keys]]
@@ -28,16 +28,16 @@
:in ['$]
:where []}
:args [db]}
(:sort-by args) (add-sorter-field {"client" ['[?e :payment/client ?c]
'[?c :client/name ?sorter]]
"vendor" ['[?e :payment/vendor ?v]
'[?v :vendor/name ?sorter]]
"bank-account" ['[?e :payment/bank-account ?c]
'[?c :bank-account/name ?sorter]]
"check-number" ['[?e :payment/check-number ?sorter]]
"date" ['[?e :payment/date ?sorter]]
"amount" ['[?e :payment/amount ?sorter]]
"status" ['[?e :payment/status ?sorter]]}
(:sort args) (add-sorter-fields {"client" ['[?e :payment/client ?c]
'[?c :client/name ?sort-client]]
"vendor" ['[?e :payment/vendor ?v]
'[?v :vendor/name ?sort-vendor]]
"bank-account" ['[?e :payment/bank-account ?ba]
'[?ba :bank-account/name ?sort-bank-account]]
"check-number" ['[?e :payment/check-number ?sort-check-number]]
"date" ['[?e :payment/date ?sort-date]]
"amount" ['[?e :payment/amount ?sort-amount]]
"status" ['[?e :payment/status ?sort-status]]}
args)
(limited-clients (:id args))
@@ -113,7 +113,7 @@
(cond->> query
true (d/query)
true (apply-sort-2 args [:desc :asc])
true (apply-sort-3 args)
true (apply-pagination args))))
(defn graphql-results [ids db args]

View File

@@ -1,6 +1,6 @@
(ns auto-ap.datomic.invoices
(:require [datomic.api :as d]
[auto-ap.datomic :refer [uri remove-nils merge-query apply-pagination apply-sort-2 add-sorter-field]]
[auto-ap.datomic :refer [uri remove-nils merge-query apply-pagination apply-sort-3 add-sorter-fields]]
[auto-ap.graphql.utils :refer [limited-clients]]
[auto-ap.parse :as parse]
[clj-time.coerce :as c]
@@ -28,17 +28,19 @@
:in ['$]
:where ['[?e :invoice/invoice-number]]}
:args [(d/db (d/connect uri))]}
(:sort-by args) (add-sorter-field {"client" ['[?e :invoice/client ?c]
'[?c :client/name ?sorter]]
"vendor" ['[?e :invoice/vendor ?v]
'[?v :vendor/name ?sorter]]
"description-original" ['[?e :transaction/description-original ?sorter]]
"date" ['[?e :invoice/date ?sorter]]
"due" ['[?e :invoice/due ?sorter]]
"invoice-number" ['[?e :invoice/invoice-number ?sorter]]
"total" ['[?e :invoice/total ?sorter]]
"outstanding" ['[?e :invoice/outstanding-balance ?sorter]]}
args)
(:sort args) (add-sorter-fields {"client" ['[?e :invoice/client ?c]
'[?c :client/name ?sort-client]]
"vendor" ['[?e :invoice/vendor ?v]
'[?v :vendor/name ?sort-vendor]]
"description-original" ['[?e :transaction/description-original ?sort-description-original]]
"location" ['[?e :invoice/expense-accounts ?iea]
'[?iea :invoice-expense-account/location ?sort-location]]
"date" ['[?e :invoice/date ?sort-date]]
"due" ['[?e :invoice/due ?sort-due]]
"invoice-number" ['[?e :invoice/invoice-number ?sort-invoice-number]]
"total" ['[?e :invoice/total ?sort-total]]
"outstanding-balance" ['[?e :invoice/outstanding-balance ?sort-outstanding-balance]]}
args)
(limited-clients (:id args))
(merge-query {:query {:in ['[?xx ...]]
:where ['[?e :invoice/client ?xx]]}
@@ -94,7 +96,7 @@
(merge-query {:query {:find ['?base-date '?e]
:where ['[?e :invoice/date ?base-date]]}}) )
(d/query)
(apply-sort-2 args [:asc :asc])
(apply-sort-3 args)
(apply-pagination args)))

View File

@@ -1,22 +1,11 @@
(ns auto-ap.datomic.ledger
(:require [datomic.api :as d]
[auto-ap.graphql.utils :refer [->graphql limited-clients]]
[auto-ap.datomic :refer [merge-query apply-sort-2 apply-sort apply-pagination add-sorter-field]]
[auto-ap.datomic :refer [merge-query apply-sort-3 apply-pagination add-sorter-fields]]
[auto-ap.datomic :refer [uri]]
[clj-time.coerce :as c]
[clj-time.core :as time]))
(defn sort-fn [sort-by]
(cond
(= "client" sort-by)
#(-> % :journal-entry/client :client/name)
(= "vendor" sort-by)
#(-> % :journal-entry/vendor :vendor/name)
:else
(keyword "journal-entry" sort-by)))
(defn raw-graphql-ids [db args]
(let [query (cond-> {:query {:find []
@@ -24,12 +13,12 @@
:where []}
:args [db]}
(:sort-by args) (add-sorter-field {"client" ['[?e :journal-entry/client ?c]
'[?c :client/name ?sorter]]
"date" ['[?e :journal-entry/date ?sorter]]
"vendor" ['[?e :journal-entry/vendor ?sorter]]
"amount" ['[?e :journal-entry/amount ?sorter]]}
args)
(:sort args) (add-sorter-fields {"client" ['[?e :journal-entry/client ?c]
'[?c :client/name ?sort-client]]
"date" ['[?e :journal-entry/date ?sort-date]]
"vendor" ['[?e :journal-entry/vendor ?sort-vendor]]
"amount" ['[?e :journal-entry/amount ?sort-amount]]}
args)
(limited-clients (:id args))
(merge-query {:query {:in ['[?xx ...]]
@@ -85,7 +74,7 @@
(merge-query {:query {:find ['?base-date '?e] :where ['[?e :journal-entry/date ?base-date]]}}))]
(->> query
(d/query)
(apply-sort-2 args [:desc :asc])
(apply-sort-3 args)
(apply-pagination args))))
(defn graphql-results [ids db args]

View File

@@ -1,6 +1,6 @@
(ns auto-ap.datomic.transaction-rules
(:require [datomic.api :as d]
[auto-ap.datomic :refer [uri merge-query apply-sort-2 apply-pagination add-sorter-field]]
[auto-ap.datomic :refer [uri merge-query apply-sort-3 apply-pagination add-sorter-fields]]
[auto-ap.graphql.utils :refer [limited-clients]]
[clojure.set :refer [rename-keys]]
[clj-time.coerce :as c]))
@@ -24,18 +24,17 @@
:in ['$]
:where []}
:args [db]}
(:sort-by args) (add-sorter-field {"client" ['[?e :transaction-rule/client ?c]
'[?c :client/name ?sorter]]
(:sort args) (add-sorter-fields {"client" ['[?e :transaction-rule/client ?c]
'[?c :client/name ?sort-client]]
"yodlee-merchant" ['[?e :transaction-rule/yodlee-merchant ?c]
'[?c :yodlee-merchant/name ?sorter]]
"bank-account" ['[?e :transaction-rule/bank-account ?c]
'[?c :bank-account/name ?sorter]]
"description" ['[?e :transaction-rule/description ?sorter]]
"note" ['[?e :transaction-rule/note ?sorter]]
"amount-lte" ['[?e :transaction-rule/amount-lte ?sorter]]
"amount-gte" ['[?e :transaction-rule/amount-gte ?sorter]]
}
"yodlee-merchant" ['[?e :transaction-rule/yodlee-merchant ?ym]
'[?ym :yodlee-merchant/name ?sort-yodlee-merchant]]
"bank-account" ['[?e :transaction-rule/bank-account ?ba]
'[?ba :bank-account/name ?sort-bank-account]]
"description" ['[?e :transaction-rule/description ?sort-description]]
"note" ['[?e :transaction-rule/note ?sort-note]]
"amount-lte" ['[?e :transaction-rule/amount-lte ?sort-amount-lte]]
"amount-gte" ['[?e :transaction-rule/amount-gte ?sort-amount-gte]]}
args)
(limited-clients (:id args))
@@ -55,7 +54,7 @@
(cond->> query
true (d/query)
true (apply-sort-2 args [:asc])
true (apply-sort-3 args)
true (apply-pagination args))))
(defn graphql-results [ids db args]

View File

@@ -1,6 +1,6 @@
(ns auto-ap.datomic.transactions
(:require [datomic.api :as d]
[auto-ap.datomic :refer [uri merge-query apply-sort-2 apply-sort apply-pagination add-sorter-field]]
[auto-ap.datomic :refer [uri merge-query apply-sort-3 apply-pagination add-sorter-fields]]
[auto-ap.graphql.utils :refer [limited-clients]]
[clj-time.coerce :as c]
[clj-time.coerce :as coerce]))
@@ -25,25 +25,25 @@
:where []}
:args [db]}
(:sort-by args) (add-sorter-field {"client" ['[?e :transaction/client ?c]
'[?c :client/name ?sorter]]
"account" ['[?e :transaction/date]
'(or-join [?e ?sorter]
(and [?e :transaction/account ?c]
[?c :account/name ?sorter])
(and
(not [?e :transaction/account])
[(ground "") ?sorter]))]
"description-original" ['[?e :transaction/description-original ?sorter]]
"date" ['[?e :transaction/date ?sorter]]
"vendor" ['(or-join [?e ?sorter]
(and [(missing? $ ?e :transaction/vendor)]
[?e :transaction/description-original ?sorter])
(and [?e :transaction/vendor ?v]
[?v :vendor/name ?sorter]))]
"amount" ['[?e :transaction/amount ?sorter]]
"status" ['[?e :transaction/status ?sorter]]}
args)
(:sort args) (add-sorter-fields {"client" ['[?e :transaction/client ?c]
'[?c :client/name ?sort-client]]
"account" ['[?e :transaction/date]
'(or-join [?e ?sort-account]
(and [?e :transaction/account ?c]
[?c :account/name ?sort-account])
(and
(not [?e :transaction/account])
[(ground "") ?sort-account]))]
"description-original" ['[?e :transaction/description-original ?sort-description-original]]
"date" ['[?e :transaction/date ?sort-date]]
"vendor" ['(or-join [?e ?sort-vendor]
(and [(missing? $ ?e :transaction/vendor)]
[?e :transaction/description-original ?sort-vendor])
(and [?e :transaction/vendor ?v]
[?v :vendor/name ?sort-vendor]))]
"amount" ['[?e :transaction/amount ?sort-amount]]
"status" ['[?e :transaction/status ?sort-status]]}
args)
(limited-clients (:id args))
(merge-query {:query {:in ['[?xx ...]]
@@ -118,7 +118,7 @@
'[?e :transaction/date ?base-date]]}}))]
(cond->> query
true (d/query)
true (apply-sort-2 args [:desc :asc])
true (apply-sort-3 args)
true (apply-pagination args)))))
(defn graphql-results [ids db args]