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

Also add deps.edn to cli dep which is needed for reuse with frontend
This commit is contained in:
Gabriel Horner
2025-08-04 16:53:40 -04:00
committed by Gabriel Horner
parent 1765148851
commit 241c1c104e
6 changed files with 26 additions and 22 deletions

View File

@@ -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
deps/cli/deps.edn vendored Normal file
View File

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

View File

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

View File

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

View File

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

View File

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