From ccee0fca8db935e0153198b5f8c0791ac61a1a1a Mon Sep 17 00:00:00 2001 From: BC Date: Tue, 29 Jan 2019 07:42:29 -0800 Subject: [PATCH] more performance improvement. --- src/clj/auto_ap/datomic/transactions.clj | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/clj/auto_ap/datomic/transactions.clj b/src/clj/auto_ap/datomic/transactions.clj index 16b29d4a..7078121e 100644 --- a/src/clj/auto_ap/datomic/transactions.clj +++ b/src/clj/auto_ap/datomic/transactions.clj @@ -48,15 +48,23 @@ sort-fn (sort-by sort-fn) (= (:asc args) false) (reverse))) +(defn apply-sort-2 [args results ] + + (let [comparator (if (= (:asc args) false) + (fn [x y] (compare y x)) + (fn [x y] (compare x y)))] + (sort comparator results ))) + (defn apply-pagination [args results] + {:ids (->> results (drop (:start args 0)) (take (:count args 100)) - (map first)) + (map last)) :count (count results)}) (defn raw-graphql-ids [db args] - (let [query (cond-> {:query {:find ['?e] + (let [query (cond-> {:query {:find [] :in ['$ ] :where []} :args [db]} @@ -92,10 +100,10 @@ :args [(:original-id args)]}) true - (merge-query {:query {:where ['[?e :transaction/id]]}}))] + (merge-query {:query {:find ['?e] :where ['[?e :transaction/id]]}}))] (cond->> query true (d/query) - (:sort-by args) (apply-sort args second) + (:sort-by args) (apply-sort-2 args) true (apply-pagination args)))) (defn graphql-results [ids db args]