fix: tag inheritance only going one level deep

fixes https://github.com/logseq/db-test/issues/88
pull/11525/head
Tienson Qin 2024-09-15 12:29:23 +08:00
parent 27b9f6b5c6
commit 4a42168dc3
3 changed files with 30 additions and 4 deletions

View File

@ -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))

View File

@ -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"}))))

View File

@ -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