瀏覽代碼

chore: mv file graph specific fns out ldb

Gabriel Horner 9 月之前
父節點
當前提交
04b832f5cb

+ 1 - 0
.clj-kondo/config.edn

@@ -65,6 +65,7 @@
              electron.ipc ipc
              electron.ipc ipc
              electron.utils utils
              electron.utils utils
              frontend.commands commands
              frontend.commands commands
+             frontend.common.file-based.db common-file-db
              frontend.common.date common-date
              frontend.common.date common-date
              frontend.common.file.core common-file
              frontend.common.file.core common-file
              frontend.common.file.util wfu
              frontend.common.file.util wfu

+ 1 - 35
deps/db/src/logseq/db.cljs

@@ -19,8 +19,7 @@
             [logseq.db.frontend.rules :as rules]
             [logseq.db.frontend.rules :as rules]
             [logseq.db.common.entity-util :as common-entity-util]
             [logseq.db.common.entity-util :as common-entity-util]
             [logseq.db.common.sqlite :as sqlite-common-db]
             [logseq.db.common.sqlite :as sqlite-common-db]
-            [logseq.db.sqlite.util :as sqlite-util]
-            [logseq.db.file-based.rules :as file-rules])
+            [logseq.db.sqlite.util :as sqlite-util])
   (:refer-clojure :exclude [object?]))
   (:refer-clojure :exclude [object?]))
 
 
 (defonce *transact-fn (atom nil))
 (defonce *transact-fn (atom nil))
@@ -534,39 +533,6 @@
   [db]
   [db]
   (when db (get-key-value db :logseq.kv/remote-schema-version)))
   (when db (get-key-value db :logseq.kv/remote-schema-version)))
 
 
-;; File based fns
-(defn get-namespace-pages
-  "Accepts both sanitized and unsanitized namespaces"
-  [db namespace' {:keys [db-graph?]}]
-  (assert (string? namespace'))
-  (let [namespace'' (common-util/page-name-sanity-lc namespace')
-        pull-attrs  (cond-> [:db/id :block/name :block/title :block/namespace]
-                      (not db-graph?)
-                      (conj {:block/file [:db/id :file/path]}))]
-    (d/q
-     [:find [(list 'pull '?c pull-attrs) '...]
-      :in '$ '% '?namespace
-      :where
-      ['?p :block/name '?namespace]
-      (list 'namespace '?p '?c)]
-     db
-     (:namespace file-rules/rules)
-     namespace'')))
-
-(defn get-pages-by-name-partition
-  [db partition']
-  (when-not (string/blank? partition')
-    (let [partition'' (common-util/page-name-sanity-lc (string/trim partition'))
-          ids (->> (d/datoms db :aevt :block/name)
-                   (filter (fn [datom]
-                             (let [page (:v datom)]
-                               (string/includes? page partition''))))
-                   (map :e))]
-      (when (seq ids)
-        (d/pull-many db
-                     '[:db/id :block/name :block/title]
-                     ids)))))
-
 (defn get-all-properties
 (defn get-all-properties
   [db]
   [db]
   (->> (d/datoms db :avet :block/tags :logseq.class/Property)
   (->> (d/datoms db :avet :block/tags :logseq.class/Property)

+ 2 - 0
scripts/src/logseq/tasks/dev/db_and_file_graphs.clj

@@ -26,6 +26,7 @@
         ["frontend.handler.file-based" "frontend.handler.file-sync"
         ["frontend.handler.file-based" "frontend.handler.file-sync"
          "frontend.db.file-based"
          "frontend.db.file-based"
          "frontend.util.file-based"
          "frontend.util.file-based"
+         "frontend.common.file-based"
          "frontend.worker.handler.page.file-based"
          "frontend.worker.handler.page.file-based"
          ;; Want to only specify this ns and not the ones under it but don't have a way yet
          ;; Want to only specify this ns and not the ones under it but don't have a way yet
          "frontend.worker.file"
          "frontend.worker.file"
@@ -56,6 +57,7 @@
   "Paths _only_ for file graphs"
   "Paths _only_ for file graphs"
   ["src/main/frontend/handler/file_based" "src/main/frontend/handler/file_sync.cljs" "src/main/frontend/db/file_based"
   ["src/main/frontend/handler/file_based" "src/main/frontend/handler/file_sync.cljs" "src/main/frontend/db/file_based"
    "src/main/frontend/util/file_based" "src/main/frontend/worker/handler/page/file_based" "src/main/frontend/worker/file.cljs"
    "src/main/frontend/util/file_based" "src/main/frontend/worker/handler/page/file_based" "src/main/frontend/worker/file.cljs"
+   "src/main/frontend/common/file_based"
    "src/main/frontend/fs"
    "src/main/frontend/fs"
    "src/main/frontend/components/file_sync.cljs"
    "src/main/frontend/components/file_sync.cljs"
    "src/main/frontend/components/file_based"
    "src/main/frontend/components/file_based"

+ 37 - 0
src/main/frontend/common/file_based/db.cljs

@@ -0,0 +1,37 @@
+(ns frontend.common.file-based.db
+  "Database fns for file graphs that are used by worker and frontend"
+  (:require [clojure.string :as string]
+            [datascript.core :as d]
+            [logseq.common.util :as common-util]
+            [logseq.db.file-based.rules :as file-rules]))
+
+(defn get-namespace-pages
+  "Accepts both sanitized and unsanitized namespaces"
+  [db namespace']
+  (assert (string? namespace'))
+  (let [namespace'' (common-util/page-name-sanity-lc namespace')
+        pull-attrs [:db/id :block/name :block/original-name :block/namespace
+                    {:block/file [:db/id :file/path]}]]
+    (d/q
+     [:find [(list 'pull '?c pull-attrs) '...]
+      :in '$ '% '?namespace
+      :where
+      ['?p :block/name '?namespace]
+      (list 'namespace '?p '?c)]
+     db
+     (:namespace file-rules/rules)
+     namespace'')))
+
+(defn get-pages-by-name-partition
+  [db partition']
+  (when-not (string/blank? partition')
+    (let [partition'' (common-util/page-name-sanity-lc (string/trim partition'))
+          ids (->> (d/datoms db :aevt :block/name)
+                   (filter (fn [datom]
+                             (let [page (:v datom)]
+                               (string/includes? page partition''))))
+                   (map :e))]
+      (when (seq ids)
+        (d/pull-many db
+                     '[:db/id :block/name :block/title]
+                     ids)))))

+ 2 - 1
src/main/frontend/db/model.cljs

@@ -6,6 +6,7 @@
             [clojure.string :as string]
             [clojure.string :as string]
             [clojure.walk :as walk]
             [clojure.walk :as walk]
             [datascript.core :as d]
             [datascript.core :as d]
+            [frontend.common.file-based.db :as common-file-db]
             [frontend.config :as config]
             [frontend.config :as config]
             [frontend.date :as date]
             [frontend.date :as date]
             [frontend.db.conn :as conn]
             [frontend.db.conn :as conn]
@@ -912,7 +913,7 @@ independent of format as format specific heading characters are stripped"
 (defn get-namespace-pages
 (defn get-namespace-pages
   "Accepts both sanitized and unsanitized namespaces"
   "Accepts both sanitized and unsanitized namespaces"
   [repo namespace]
   [repo namespace]
-  (ldb/get-namespace-pages (conn/get-db repo) namespace {:db-graph? (config/db-based-graph? repo)}))
+  (common-file-db/get-namespace-pages (conn/get-db repo) namespace))
 
 
 (defn- tree [flat-col root]
 (defn- tree [flat-col root]
   (let [sort-fn #(sort-by :block/name %)
   (let [sort-fn #(sort-by :block/name %)

+ 5 - 4
src/main/frontend/worker/handler/page/file_based/rename.cljs

@@ -1,6 +1,7 @@
 (ns frontend.worker.handler.page.file-based.rename
 (ns frontend.worker.handler.page.file-based.rename
   "File based page rename"
   "File based page rename"
-  (:require [frontend.worker.handler.page :as worker-page]
+  (:require [frontend.common.file-based.db :as common-file-db]
+            [frontend.worker.handler.page :as worker-page]
             [datascript.core :as d]
             [datascript.core :as d]
             [clojure.string :as string]
             [clojure.string :as string]
             [clojure.walk :as walk]
             [clojure.walk :as walk]
@@ -254,7 +255,7 @@
 (defn- rename-namespace-pages!
 (defn- rename-namespace-pages!
   "Original names (unsanitized only)"
   "Original names (unsanitized only)"
   [repo conn config old-name new-name]
   [repo conn config old-name new-name]
-  (let [pages (ldb/get-namespace-pages @conn old-name {})
+  (let [pages (common-file-db/get-namespace-pages @conn old-name)
         page (d/pull @conn '[*] [:block/name (common-util/page-name-sanity-lc old-name)])
         page (d/pull @conn '[*] [:block/name (common-util/page-name-sanity-lc old-name)])
         pages (cons page pages)]
         pages (cons page pages)]
     (doseq [{:block/keys [name title]} pages]
     (doseq [{:block/keys [name title]} pages]
@@ -274,8 +275,8 @@
   (let [nested-page-str (page-ref/->page-ref (common-util/page-name-sanity-lc old-ns-name))
   (let [nested-page-str (page-ref/->page-ref (common-util/page-name-sanity-lc old-ns-name))
         ns-prefix-format-str (str page-ref/left-brackets "%s/")
         ns-prefix-format-str (str page-ref/left-brackets "%s/")
         ns-prefix       (common-util/format ns-prefix-format-str (common-util/page-name-sanity-lc old-ns-name))
         ns-prefix       (common-util/format ns-prefix-format-str (common-util/page-name-sanity-lc old-ns-name))
-        nested-pages    (ldb/get-pages-by-name-partition @conn nested-page-str)
-        nested-pages-ns (ldb/get-pages-by-name-partition @conn ns-prefix)]
+        nested-pages    (common-file-db/get-pages-by-name-partition @conn nested-page-str)
+        nested-pages-ns (common-file-db/get-pages-by-name-partition @conn ns-prefix)]
     (when nested-pages
     (when nested-pages
       ;; rename page "[[obsidian]] is a tool" to "[[logseq]] is a tool"
       ;; rename page "[[obsidian]] is a tool" to "[[logseq]] is a tool"
       (doseq [{:block/keys [name title]} nested-pages]
       (doseq [{:block/keys [name title]} nested-pages]