浏览代码

refactor: have one fn to fetch ~/logseq/graphs dir

Also add deps.edn to cli dep which is needed for reuse with frontend
Gabriel Horner 2 月之前
父节点
当前提交
241c1c104e

+ 1 - 0
deps.edn

@@ -37,6 +37,7 @@
   logseq/graph-parser                   {:local/root "deps/graph-parser"}
   logseq/outliner                       {:local/root "deps/outliner"}
   logseq/publishing                     {:local/root "deps/publishing"}
+  logseq/cli                            {:local/root "deps/cli"}
   logseq/shui                           {:local/root "deps/shui"}
   metosin/malli                         {:mvn/version "0.16.1"}
   com.cognitect/transit-cljs            {:mvn/version "0.8.280"}

+ 7 - 0
deps/cli/deps.edn

@@ -0,0 +1,7 @@
+{:paths ["src"]
+ :deps
+ {logseq/outliner {:local/root "../outliner"}}
+
+ :aliases
+ {:clj-kondo {:replace-deps {clj-kondo/clj-kondo {:mvn/version "2024.09.27"}}
+              :main-opts    ["-m" "clj-kondo.main"]}}}

+ 6 - 6
deps/cli/src/logseq/cli/common/graph.cljs

@@ -1,4 +1,4 @@
-(ns logseq.cli.common.graph
+(ns ^:node-only logseq.cli.common.graph
   "Graph related fns shared between CLI and electron"
   (:require ["fs-extra" :as fs-extra]
             ["os" :as os]
@@ -14,15 +14,15 @@
         (string/replace "+3A+" ":")
         (string/replace "++" "/"))))
 
-(defn- get-db-based-graphs-dir
+(defn get-db-graphs-dir
+  "Directory where DB graphs are stored"
   []
-  (let [dir (node-path/join (os/homedir) "logseq" "graphs")]
-    (fs-extra/ensureDirSync dir)
-    dir))
+  (node-path/join (os/homedir) "logseq" "graphs"))
 
 (defn get-db-based-graphs
   []
-  (let [dir (get-db-based-graphs-dir)]
+  (let [dir (get-db-graphs-dir)]
+    (fs-extra/ensureDirSync dir)
     (->> (common-graph/read-directories dir)
          (remove (fn [s] (= s common-config/unlinked-graphs-dir)))
          (map graph-name->path)

+ 1 - 0
deps/db/src/logseq/db/common/sqlite_cli.cljs

@@ -112,4 +112,5 @@
                              ;; $ORIGINAL_PWD used by bb tasks to correct current dir
                                (node-path/join (or js/process.env.ORIGINAL_PWD ".") %))]
         ((juxt node-path/dirname node-path/basename) (resolve-path' graph-dir-or-path)))
+      ;; TODO: Reuse with get-db-graphs-dir when there is a db ns that is usable by electron i.e. no better-sqlite3
       [(node-path/join (os/homedir) "logseq" "graphs") graph-dir-or-path])))

+ 8 - 13
src/electron/electron/db.cljs

@@ -1,44 +1,39 @@
 (ns electron.db
   "Provides SQLite dbs for electron and manages files of those dbs"
-  (:require ["electron" :refer [app]]
-            ["fs-extra" :as fs]
+  (:require ["fs-extra" :as fs]
             ["path" :as node-path]
+            [logseq.cli.common.graph :as cli-common-graph]
             [logseq.common.config :as common-config]
             [logseq.db.common.sqlite :as common-sqlite]))
 
-(defn get-graphs-dir
-  []
-  (let [path (.getPath ^object app "home")]
-    (node-path/join path "logseq" "graphs")))
-
 (defn ensure-graphs-dir!
   []
-  (fs/ensureDirSync (get-graphs-dir)))
+  (fs/ensureDirSync (cli-common-graph/get-db-graphs-dir)))
 
 (defn ensure-graph-dir!
   [db-name]
   (ensure-graphs-dir!)
-  (let [graph-dir (node-path/join (get-graphs-dir) (common-sqlite/sanitize-db-name db-name))]
+  (let [graph-dir (node-path/join (cli-common-graph/get-db-graphs-dir) (common-sqlite/sanitize-db-name db-name))]
     (fs/ensureDirSync graph-dir)
     graph-dir))
 
 (defn save-db!
   [db-name data]
-  (let [[_db-name db-path] (common-sqlite/get-db-full-path (get-graphs-dir) db-name)]
+  (let [[_db-name db-path] (common-sqlite/get-db-full-path (cli-common-graph/get-db-graphs-dir) db-name)]
     (fs/writeFileSync db-path data)))
 
 (defn get-db
   [db-name]
   (let [_ (ensure-graph-dir! db-name)
-        [_db-name db-path] (common-sqlite/get-db-full-path (get-graphs-dir) db-name)]
+        [_db-name db-path] (common-sqlite/get-db-full-path (cli-common-graph/get-db-graphs-dir) db-name)]
     (when (fs/existsSync db-path)
       (fs/readFileSync db-path))))
 
 (defn unlink-graph!
   [repo]
   (let [db-name (common-sqlite/sanitize-db-name repo)
-        path (node-path/join (get-graphs-dir) db-name)
-        unlinked (node-path/join (get-graphs-dir) common-config/unlinked-graphs-dir)
+        path (node-path/join (cli-common-graph/get-db-graphs-dir) db-name)
+        unlinked (node-path/join (cli-common-graph/get-db-graphs-dir) common-config/unlinked-graphs-dir)
         new-path (node-path/join unlinked db-name)
         new-path-exists? (fs/existsSync new-path)
         new-path' (if new-path-exists?

+ 3 - 3
src/electron/electron/utils.cljs

@@ -6,9 +6,9 @@
             [cljs-bean.core :as bean]
             [clojure.string :as string]
             [electron.configs :as cfgs]
-            [electron.db :as db]
             [electron.logger :as logger]
             [logseq.db.sqlite.util :as sqlite-util]
+            [logseq.cli.common.graph :as cli-common-graph]
             [promesa.core :as p]))
 
 (defonce *win (atom nil)) ;; The main window
@@ -255,7 +255,7 @@
   "required by all internal state in the electron section"
   [graph-name]
   (cond (string/starts-with? graph-name sqlite-util/db-version-prefix)
-        (node-path/join (db/get-graphs-dir) (string/replace-first graph-name sqlite-util/db-version-prefix ""))
+        (node-path/join (cli-common-graph/get-db-graphs-dir) (string/replace-first graph-name sqlite-util/db-version-prefix ""))
         (string/includes? graph-name "logseq_local_")
         (string/replace-first graph-name "logseq_local_" "")))
 
@@ -263,7 +263,7 @@
   (defn get-graph-name
     "Reverse `get-graph-dir`"
     [graph-dir]
-    (if (= (db/get-graphs-dir) (node-path/dirname graph-dir))
+    (if (= (cli-common-graph/get-db-graphs-dir) (node-path/dirname graph-dir))
       (str sqlite-util/db-version-prefix (node-path/basename graph-dir))
       (str "logseq_local_" graph-dir))))