mirror of https://github.com/logseq/logseq
fix: slow query for get-block-and-children
parent
5538088f8f
commit
543904a532
|
@ -70,6 +70,7 @@
|
|||
:block/created-at
|
||||
:block/updated-at
|
||||
:block/file
|
||||
:block/parent
|
||||
{:block/page [:db/id :block/name :block/original-name :block/journal-day]}
|
||||
{:block/_parent ...}])
|
||||
|
||||
|
@ -590,6 +591,13 @@
|
|||
(when (seq ids)
|
||||
(db-utils/pull-many repo '[*] ids)))))
|
||||
|
||||
;; TODO: use the tree directly
|
||||
(defn- flatten-tree
|
||||
[blocks-tree]
|
||||
(if-let [children (:block/_parent blocks-tree)]
|
||||
(cons (dissoc blocks-tree :block/_parent) (mapcat flatten-tree children))
|
||||
[blocks-tree]))
|
||||
|
||||
(defn get-block-and-children
|
||||
([repo block-uuid]
|
||||
(get-block-and-children repo block-uuid true))
|
||||
|
@ -597,17 +605,15 @@
|
|||
(some-> (react/q repo [:block/block block-uuid]
|
||||
{:use-cache? use-cache?
|
||||
:transform-fn #(block-and-children-transform % repo block-uuid)}
|
||||
'[:find (pull ?c [*])
|
||||
:in $ ?id %
|
||||
'[:find [(pull ?block ?block-attrs) ...]
|
||||
:in $ ?id ?block-attrs
|
||||
:where
|
||||
[?b :block/uuid ?id]
|
||||
(or-join [?b ?c ?id]
|
||||
;; including the parent
|
||||
[?c :block/uuid ?id]
|
||||
(parent ?b ?c))]
|
||||
[?block :block/uuid ?id]]
|
||||
block-uuid
|
||||
rules)
|
||||
react)))
|
||||
block-attrs)
|
||||
react
|
||||
first
|
||||
flatten-tree)))
|
||||
|
||||
(defn get-file-page
|
||||
([file-path]
|
||||
|
|
|
@ -34,12 +34,12 @@
|
|||
:in $ ?start ?today
|
||||
:where
|
||||
[?h :block/marker ?marker]
|
||||
[(contains? #{"NOW" "DOING"} ?marker)]
|
||||
[?h :block/page ?p]
|
||||
[?p :block/journal? true]
|
||||
[?p :block/journal-day ?d]
|
||||
[(>= ?d ?start)]
|
||||
[(<= ?d ?today)]
|
||||
[(contains? #{"NOW" "DOING"} ?marker)]]
|
||||
[(<= ?d ?today)]]
|
||||
:inputs [:14d :today]
|
||||
:result-transform (fn [result]
|
||||
(sort-by (fn [h]
|
||||
|
@ -50,12 +50,12 @@
|
|||
:in $ ?start ?next
|
||||
:where
|
||||
[?h :block/marker ?marker]
|
||||
[(contains? #{"NOW" "LATER" "TODO"} ?marker)]
|
||||
[?h :block/ref-pages ?p]
|
||||
[?p :block/journal? true]
|
||||
[?p :block/journal-day ?d]
|
||||
[(> ?d ?start)]
|
||||
[(< ?d ?next)]
|
||||
[(contains? #{"NOW" "LATER" "TODO"} ?marker)]]
|
||||
[(< ?d ?next)]]
|
||||
:inputs [:today :7d-after]
|
||||
:collapsed? false}]}
|
||||
|
||||
|
|
Loading…
Reference in New Issue