Prechádzať zdrojové kódy

fix: aliases not working

Tienson Qin 5 rokov pred
rodič
commit
2a4451ebf2

+ 4 - 4
deps.edn

@@ -10,8 +10,8 @@
                                :sha "7c2822565d9a114c7d8604c335af89de4640e2e5"}
                                :sha "7c2822565d9a114c7d8604c335af89de4640e2e5"}
   ;; datascript                  {:mvn/version "1.0.1"}
   ;; datascript                  {:mvn/version "1.0.1"}
   datascript-transit/datascript-transit
   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"}
   funcool/promesa             {:mvn/version "4.0.2"}
   medley/medley               {:mvn/version "1.2.0"}
   medley/medley               {:mvn/version "1.2.0"}
   metosin/reitit-frontend     {:mvn/version "0.3.10"}
   metosin/reitit-frontend     {:mvn/version "0.3.10"}
@@ -20,7 +20,7 @@
   org.clojure/core.match      {:mvn/version "1.0.0"}
   org.clojure/core.match      {:mvn/version "1.0.0"}
   com.andrewmcveigh/cljs-time {:mvn/version "0.5.2"}
   com.andrewmcveigh/cljs-time {:mvn/version "0.5.2"}
   cljs-drag-n-drop/cljs-drag-n-drop
   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"}
   borkdude/sci                {:mvn/version "0.1.1-alpha.6"}
   hickory/hickory             {:mvn/version "0.7.1"}
   hickory/hickory             {:mvn/version "0.7.1"}
   hiccups/hiccups             {:mvn/version "0.3.0"}
   hiccups/hiccups             {:mvn/version "0.3.0"}
@@ -30,7 +30,7 @@
   expound/expound             {:mvn/version "0.8.6"}
   expound/expound             {:mvn/version "0.8.6"}
   lambdaisland/glogi          {:mvn/version "1.0.74"}}
   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"}
                   :extra-deps  {org.clojure/clojurescript   {:mvn/version "1.10.520"}
                                 thheller/shadow-cljs        {:mvn/version "2.8.81"}
                                 thheller/shadow-cljs        {:mvn/version "2.8.81"}
                                 binaryage/devtools          {:mvn/version "0.9.10"}
                                 binaryage/devtools          {:mvn/version "0.9.10"}

+ 23 - 21
src/main/frontend/db/model.cljs

@@ -311,8 +311,8 @@
              [?e1 :page/alias ?e2]
              [?e1 :page/alias ?e2]
              [?e2 :page/alias ?e3]]])
              [?e2 :page/alias ?e3]]])
      db-utils/seq-flatten
      db-utils/seq-flatten
-     (set))
-    (set/union #{page-id})))
+     (set)
+     (set/union #{page-id}))))
 
 
 (defn get-page-alias-names
 (defn get-page-alias-names
   [repo page-name]
   [repo page-name]
@@ -846,25 +846,27 @@
       (mapv (fn [page] [page (get-page-alias repo page)]) mentioned-pages))))
       (mapv (fn [page] [page (get-page-alias repo page)]) mentioned-pages))))
 
 
 (defn get-page-referenced-blocks
 (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
 (defn get-date-scheduled-or-deadlines
   [journal-title]
   [journal-title]

+ 36 - 0
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)