diff --git a/deps/db/src/logseq/db.cljs b/deps/db/src/logseq/db.cljs index 10f30fba5e..08407d6ec5 100644 --- a/deps/db/src/logseq/db.cljs +++ b/deps/db/src/logseq/db.cljs @@ -534,9 +534,9 @@ (when db (get-key-value db :logseq.kv/remote-schema-version))) (def get-all-properties db-db/get-all-properties) -(def get-page-parents db-db/get-page-parents) +(def get-class-extends db-db/get-class-extends) (def get-classes-parents db-db/get-classes-parents) -(def get-title-with-parents db-db/get-title-with-parents) +(def get-class-title-with-extends db-db/get-class-title-with-extends) (def class-instance? db-db/class-instance?) (def inline-tag? db-db/inline-tag?) (def node-display-type-classes db-db/node-display-type-classes) diff --git a/deps/db/src/logseq/db/frontend/class.cljs b/deps/db/src/logseq/db/frontend/class.cljs index 1e03552fbc..76b53661a7 100644 --- a/deps/db/src/logseq/db/frontend/class.cljs +++ b/deps/db/src/logseq/db/frontend/class.cljs @@ -121,7 +121,7 @@ [db eid] (->> (d/q '[:find [?c ...] - :in $ ?class-extends % + :in $ ?p % :where (class-extends ?p ?c)] db diff --git a/deps/db/src/logseq/db/frontend/db.cljs b/deps/db/src/logseq/db/frontend/db.cljs index 239a779e99..7a2602cfef 100644 --- a/deps/db/src/logseq/db/frontend/db.cljs +++ b/deps/db/src/logseq/db/frontend/db.cljs @@ -48,7 +48,7 @@ (map (fn [d] (d/entity db (:e d)))))) -(defn get-page-parents +(defn get-class-extends [node & {:keys [node-class?]}] (when-let [parent (:logseq.property.class/extends node)] (loop [current-parent parent @@ -61,10 +61,10 @@ (conj parents' current-parent)) (vec (reverse parents')))))) -(defn get-title-with-parents +(defn get-class-title-with-extends [entity] - (if (or (entity-util/class? entity) (entity-util/internal-page? entity)) - (let [parents' (->> (get-page-parents entity) + (if (entity-util/class? entity) + (let [parents' (->> (get-class-extends entity) (remove (fn [e] (= :logseq.class/Root (:db/ident e)))) vec)] (string/join @@ -75,7 +75,7 @@ (defn get-classes-parents [tags] (let [tags' (filter entity-util/class? tags) - result (mapcat #(get-page-parents % {:node-class? true}) tags')] + result (mapcat #(get-class-extends % {:node-class? true}) tags')] (set result))) (defn class-instance? diff --git a/deps/db/test/logseq/db_test.cljs b/deps/db/test/logseq/db_test.cljs index c53bf1db41..f6d22c1f09 100644 --- a/deps/db/test/logseq/db_test.cljs +++ b/deps/db/test/logseq/db_test.cljs @@ -48,7 +48,7 @@ (let [conn (db-test/create-conn)] (d/transact! conn class-parents-data) (is (= #{"x" "y"} - (->> (ldb/get-page-parents (ldb/get-page @conn "z") {:node-class? true}) + (->> (ldb/get-class-parents (ldb/get-page @conn "z") {:node-class? true}) (map :block/title) set))))) diff --git a/deps/graph-parser/src/logseq/graph_parser/exporter.cljs b/deps/graph-parser/src/logseq/graph_parser/exporter.cljs index a527e17316..fb996aa34e 100644 --- a/deps/graph-parser/src/logseq/graph_parser/exporter.cljs +++ b/deps/graph-parser/src/logseq/graph_parser/exporter.cljs @@ -126,7 +126,7 @@ db (ns-util/get-last-part full-name)) (map #(d/entity db %)) - (some #(let [parents (->> (ldb/get-page-parents %) + (some #(let [parents (->> (ldb/get-class-extends %) (remove (fn [e] (= :logseq.class/Root (:db/ident e)))) vec)] (when (= full-name (string/join ns-util/namespace-char (map :block/name (conj parents %)))) diff --git a/deps/outliner/src/logseq/outliner/validate.cljs b/deps/outliner/src/logseq/outliner/validate.cljs index de4a0f78f1..abc1c8ee77 100644 --- a/deps/outliner/src/logseq/outliner/validate.cljs +++ b/deps/outliner/src/logseq/outliner/validate.cljs @@ -59,7 +59,7 @@ (throw (ex-info "Duplicate page by parent" {:type :notification :payload {:message (str "Another page named " (pr-str new-title) " already exists for parents " - (pr-str (->> (ldb/get-page-parents entity) + (pr-str (->> (ldb/get-class-extends entity) (map :block/title) (string/join ns-util/parent-char)))) :type :warning}})))) diff --git a/src/main/frontend/worker/pipeline.cljs b/src/main/frontend/worker/pipeline.cljs index 08c1bb788e..d59fc21330 100644 --- a/src/main/frontend/worker/pipeline.cljs +++ b/src/main/frontend/worker/pipeline.cljs @@ -64,7 +64,7 @@ template-blocks (->> (mapcat (fn [id] (let [tag (d/entity db id) journal? (= journal-id id) - parents (ldb/get-page-parents tag {:node-class? true}) + parents (ldb/get-class-extends tag {:node-class? true}) templates (mapcat :logseq.property/_template-applied-to (conj parents tag))] (cond->> templates journal? diff --git a/src/main/frontend/worker/search.cljs b/src/main/frontend/worker/search.cljs index 3923badf5c..2a2a1f83cc 100644 --- a/src/main/frontend/worker/search.cljs +++ b/src/main/frontend/worker/search.cljs @@ -225,7 +225,7 @@ DROP TRIGGER IF EXISTS blocks_au; ;; (let [content (if (and db-based? (seq (:block/properties block))) ;; (str content (when (not= content "") "\n") (get-db-properties-str db properties)) ;; content)]) - (let [title (ldb/get-title-with-parents (assoc block :block.temp/search? true))] + (let [title (ldb/get-class-title-with-extends (assoc block :block.temp/search? true))] (when uuid {:id (str uuid) :page (str (or (:block/uuid page) uuid)) @@ -319,7 +319,7 @@ DROP TRIGGER IF EXISTS blocks_au; {:db/id (:db/id block) :block/uuid block-id :block/title (if (ldb/page? block) - (ldb/get-title-with-parents block) + (ldb/get-class-title-with-extends block) (or snippet title)) :block/page (if (common-util/uuid-string? page) (uuid page) diff --git a/src/test/frontend/worker/handler/page/db_based/page_test.cljs b/src/test/frontend/worker/handler/page/db_based/page_test.cljs index c6b1f5f5dd..84472dadc0 100644 --- a/src/test/frontend/worker/handler/page/db_based/page_test.cljs +++ b/src/test/frontend/worker/handler/page/db_based/page_test.cljs @@ -31,10 +31,11 @@ ;; Create a child page for a class [_ child-uuid3] (worker-db-page/create! conn "c1/c2" {:split-namespace? true :class? true}) child-page3 (d/entity @conn [:block/uuid child-uuid3])] - (is (= ["foo" "bar"] (map :block/title (ldb/get-page-parents child-page))) + (is (= ["foo" "bar"] (map :block/title [(:block/parent (:block/parent child-page)) + (:block/parent child-page)])) "Child page with new parent has correct parents") - (is (= (map :block/uuid (ldb/get-page-parents child-page)) - (map :block/uuid (ldb/get-page-parents child-page2))) + (is (= (map :block/uuid (ldb/get-class-extends child-page)) + (map :block/uuid (ldb/get-class-extends child-page2))) "Child page with existing parents has correct parents") (is (= ["Root Tag" "c1"] (map :block/title (ldb/get-classes-parents [child-page3]))) "Child class with new parent has correct parents") @@ -52,8 +53,8 @@ (let [_ (worker-db-page/create! conn "vim/keys" {:split-namespace? true}) _ (worker-db-page/create! conn "emacs/keys" {:split-namespace? true})] (is (= #{"vim" "emacs"} - (->> (d/q '[:find [(pull ?b [{:logseq.property.class/extends [:block/title]}]) ...] :where [?b :block/title "keys"]] @conn) - (map #(get-in % [:logseq.property.class/extends :block/title])) + (->> (d/q '[:find [(pull ?b [{:block/parent [:block/title]}]) ...] :where [?b :block/title "keys"]] @conn) + (map #(get-in % [:block/parent :block/title])) set)) "Two child pages with same name exist and have different parents")))