diff --git a/deps.edn b/deps.edn index 8f1da60cb2..0bd19893a0 100755 --- a/deps.edn +++ b/deps.edn @@ -10,8 +10,8 @@ :sha "7c2822565d9a114c7d8604c335af89de4640e2e5"} ;; datascript {:mvn/version "1.0.1"} datascript-transit/datascript-transit - {:mvn/version "0.3.0" - :exclusions [datascript]} + {:mvn/version "0.3.0" + :exclusions [datascript]} funcool/promesa {:mvn/version "4.0.2"} medley/medley {:mvn/version "1.2.0"} metosin/reitit-frontend {:mvn/version "0.3.10"} @@ -20,7 +20,7 @@ org.clojure/core.match {:mvn/version "1.0.0"} com.andrewmcveigh/cljs-time {:mvn/version "0.5.2"} cljs-drag-n-drop/cljs-drag-n-drop - {:mvn/version "0.1.0"} + {:mvn/version "0.1.0"} borkdude/sci {:mvn/version "0.1.1-alpha.6"} hickory/hickory {:mvn/version "0.7.1"} hiccups/hiccups {:mvn/version "0.3.0"} @@ -30,7 +30,7 @@ expound/expound {:mvn/version "0.8.6"} lambdaisland/glogi {:mvn/version "1.0.74"}} - :aliases {:cljs {:extra-paths ["src/dev-cljs/"] + :aliases {:cljs {:extra-paths ["src/dev-cljs/" "src/test/"] :extra-deps {org.clojure/clojurescript {:mvn/version "1.10.520"} thheller/shadow-cljs {:mvn/version "2.8.81"} binaryage/devtools {:mvn/version "0.9.10"} diff --git a/src/main/frontend/db/model.cljs b/src/main/frontend/db/model.cljs index e1134617e7..e560202cfa 100644 --- a/src/main/frontend/db/model.cljs +++ b/src/main/frontend/db/model.cljs @@ -311,8 +311,8 @@ [?e1 :page/alias ?e2] [?e2 :page/alias ?e3]]]) db-utils/seq-flatten - (set)) - (set/union #{page-id}))) + (set) + (set/union #{page-id})))) (defn get-page-alias-names [repo page-name] @@ -846,25 +846,27 @@ (mapv (fn [page] [page (get-page-alias repo page)]) mentioned-pages)))) (defn get-page-referenced-blocks - [page] - (when-let [repo (state/get-current-repo)] - (when (conn/get-conn repo) - (let [page-id (:db/id (db-utils/entity [:page/name page])) - pages (page-alias-set repo page)] - (->> (react/q repo [:page/refed-blocks page-id] {} - '[:find (pull ?block [*]) - :in $ ?pages - :where - [?block :block/ref-pages ?ref-page] - [(contains? ?pages ?ref-page)]] - pages) - react - db-utils/seq-flatten - (remove (fn [block] - (let [exclude-pages pages] - (contains? exclude-pages (:db/id (:block/page block)))))) - sort-blocks - db-utils/group-by-page))))) + ([page] + (get-page-referenced-blocks (state/get-current-repo) page)) + ([repo page] + (when repo + (when (conn/get-conn repo) + (let [page-id (:db/id (db-utils/entity [:page/name page])) + pages (page-alias-set repo page)] + (->> (react/q repo [:page/refed-blocks page-id] {} + '[:find (pull ?block [*]) + :in $ ?pages + :where + [?block :block/ref-pages ?ref-page] + [(contains? ?pages ?ref-page)]] + pages) + react + db-utils/seq-flatten + (remove (fn [block] + (let [exclude-pages pages] + (contains? exclude-pages (:db/id (:block/page block)))))) + sort-blocks + db-utils/group-by-page)))))) (defn get-date-scheduled-or-deadlines [journal-title] diff --git a/src/test/frontend/db/model_test.cljs b/src/test/frontend/db/model_test.cljs new file mode 100644 index 0000000000..61b04049d7 --- /dev/null +++ b/src/test/frontend/db/model_test.cljs @@ -0,0 +1,36 @@ +(ns frontend.db.model-test + (:require [frontend.db.model :as model] + [frontend.db.conn :as conn] + [datascript.core :as d] + [frontend.db-schema :as schema] + [frontend.handler.repo :as repo-handler] + [cljs.test :refer [deftest is are testing]])) + +(defonce test-db "test-db") + +(defn- run-db! + [] + (conn/start! nil test-db)) + +(deftest test-page-alias-set + [] + (run-db!) + (let [files [{:file/path "a.md" + :file/content "---\ntitle: a\nalias: [[b]]\n---"} + {:file/path "b.md" + :file/content "---\ntitle: b\nalias: [[c]]\n---"} + {:file/path "d.md" + :file/content "---\ntitle: d\n---\n## ref to [[b]]"}] + _ (repo-handler/parse-files-and-load-to-db! test-db files {:re-render? false}) + a-aliases (model/page-alias-set test-db "a") + b-aliases (model/page-alias-set test-db "b") + alias-names (model/get-page-alias-names test-db "a") + b-ref-blocks (model/get-page-referenced-blocks test-db "b") + a-ref-blocks (model/get-page-referenced-blocks test-db "a")] + (are [x y] (= x y) + 3 (count a-aliases) + 1 (count b-ref-blocks) + 1 (count a-ref-blocks) + ["b" "c"] alias-names))) + +#_(cljs.test/test-ns 'frontend.db.model-test)