diff --git a/deps/db/src/logseq/db.cljs b/deps/db/src/logseq/db.cljs index a54a77e2b9..ca2826dec2 100644 --- a/deps/db/src/logseq/db.cljs +++ b/deps/db/src/logseq/db.cljs @@ -198,6 +198,15 @@ (d/entity db [:block/uuid id]) (d/entity db (get-first-page-by-name db (name page-name-or-uuid)))))) +(defn get-case-page + "Case sensitive version of get-page. For use with DB graphs" + [db page-name-or-uuid] + (when db + (if-let [id (if (uuid? page-name-or-uuid) page-name-or-uuid + (parse-uuid page-name-or-uuid))] + (d/entity db [:block/uuid id]) + (d/entity db (sqlite-common-db/get-first-page-by-original-name db page-name-or-uuid))))) + (defn page-empty? "Whether a page is empty. Does it has a non-page block? `page-id` could be either a string or a db/id." diff --git a/deps/db/src/logseq/db/frontend/schema.cljs b/deps/db/src/logseq/db/frontend/schema.cljs index 2807a544d5..c431cbdd45 100644 --- a/deps/db/src/logseq/db/frontend/schema.cljs +++ b/deps/db/src/logseq/db/frontend/schema.cljs @@ -90,7 +90,7 @@ :block/name {:db/unique :db.unique/identity} ;; page's original name - :block/original-name {} + :block/original-name {:db/index true} ;; page's journal day :block/journal-day {} diff --git a/deps/db/src/logseq/db/sqlite/common_db.cljs b/deps/db/src/logseq/db/sqlite/common_db.cljs index 758c7e36ee..dbd5335c1f 100644 --- a/deps/db/src/logseq/db/sqlite/common_db.cljs +++ b/deps/db/src/logseq/db/sqlite/common_db.cljs @@ -8,16 +8,23 @@ [logseq.common.util :as common-util] [logseq.common.config :as common-config])) -(defn get-pages-by-name +(defn- get-pages-by-name [db page-name] (d/datoms db :avet :block/name (common-util/page-name-sanity-lc page-name))) (defn get-first-page-by-name - "Return the oldest page's db id" + "Return the oldest page's db id for :block/name" [db page-name] (when (and db (string? page-name)) (first (sort (map :e (get-pages-by-name db page-name)))))) +(defn get-first-page-by-original-name + "Return the oldest page's db id for :block/original-name" + [db page-name] + {:pre [(string? page-name)]} + (first (sort (map :e + (d/datoms db :avet :block/original-name page-name))))) + (comment (defn- get-built-in-files [db] diff --git a/src/main/frontend/components/cmdk.cljs b/src/main/frontend/components/cmdk.cljs index 25824d440b..da2ea828fe 100644 --- a/src/main/frontend/components/cmdk.cljs +++ b/src/main/frontend/components/cmdk.cljs @@ -380,7 +380,8 @@ [state] (let [highlighted-item (some-> state state->highlighted-item)] (or (:block/uuid (:source-block highlighted-item)) - (or (:block/uuid (db/get-page (:source-page highlighted-item))) + (or (:block/uuid (db/get-case-page (:source-page highlighted-item))) + ;; fallback for file graphs (:source-page highlighted-item))))) (defmethod handle-action :open-page [_ state _event] diff --git a/src/main/frontend/components/property.cljs b/src/main/frontend/components/property.cljs index d208b37ac1..b01ea428e9 100644 --- a/src/main/frontend/components/property.cljs +++ b/src/main/frontend/components/property.cljs @@ -172,7 +172,7 @@ (if (= type :default) (pv/