فهرست منبع

fix: tag inheritance only going one level deep

fixes https://github.com/logseq/db-test/issues/88
Tienson Qin 1 سال پیش
والد
کامیت
4a42168dc3
3فایلهای تغییر یافته به همراه30 افزوده شده و 4 حذف شده
  1. 2 2
      deps/db/src/logseq/db.cljs
  2. 27 1
      deps/db/test/logseq/db_test.cljs
  3. 1 1
      deps/outliner/src/logseq/outliner/property.cljs

+ 2 - 2
deps/db/src/logseq/db.cljs

@@ -584,8 +584,8 @@
       (loop [current-parent parent]
         (when (and
                current-parent
-               (class? parent)
-               (not (contains? @*classes (:db/id parent))))
+               (class? current-parent)
+               (not (contains? @*classes (:db/id current-parent))))
           (swap! *classes conj (:db/id current-parent))
           (recur (:logseq.property/parent current-parent)))))
     @*classes))

+ 27 - 1
deps/db/test/logseq/db_test.cljs

@@ -2,7 +2,9 @@
   (:require [cljs.test :refer [deftest is]]
             [logseq.db.frontend.schema :as db-schema]
             [datascript.core :as d]
-            [logseq.db :as ldb]))
+            [logseq.db :as ldb]
+            [logseq.db.sqlite.create-graph :as sqlite-create-graph]
+            [logseq.db.sqlite.build :as sqlite-build]))
 
 
 ;;; datoms
@@ -27,3 +29,27 @@
            (try (ldb/get-block-children-ids db #uuid "e538d319-48d4-4a6d-ae70-c03bb55b6fe4")
                 (catch :default e
                   (ex-message e)))))))
+
+(def class-parents-data
+  [{:block/type "class"
+    :block/title "x"
+    :block/name "x"
+    :block/uuid #uuid "6c353967-f79b-4785-b804-a39b81d72461"}
+   {:block/type "class"
+    :block/title "y"
+    :block/name "y"
+    :block/uuid #uuid "7008db08-ba0c-4aa9-afc6-7e4783e40a99"
+    :logseq.property/parent [:block/uuid #uuid "6c353967-f79b-4785-b804-a39b81d72461"]}
+   {:block/type "class"
+    :block/title "z"
+    :block/name "z"
+    :block/uuid #uuid "d95f2912-a7af-41b9-8ed5-28861f7fc0be"
+    :logseq.property/parent [:block/uuid #uuid "7008db08-ba0c-4aa9-afc6-7e4783e40a99"]}])
+
+(deftest get-class-parents-test
+  (let [conn (d/create-conn db-schema/schema-for-db-based-graph)]
+    (d/transact! conn (sqlite-create-graph/build-db-initial-data "{}"))
+    (d/transact! conn class-parents-data)
+    (->> (ldb/get-class-parents (ldb/get-page @conn "z"))
+         (map #(:block/title (d/entity @conn %)))
+         (= #{"x" "y"}))))

+ 1 - 1
deps/outliner/src/logseq/outliner/property.cljs

@@ -343,7 +343,7 @@
   (let [tags' (filter ldb/class? tags)
         result (map
                 (fn [id] (d/entity db id))
-                (set (mapcat ldb/get-class-parents tags')))]
+                (mapcat ldb/get-class-parents tags'))]
     (set result)))
 
 (defn ^:api get-class-properties