Browse Source

fix: move some fns from db.sqlite to sqlite.common-db

To remove better-sqlite3 dependency on Electron.
Tienson Qin 2 years ago
parent
commit
f3d032d83d

+ 19 - 2
deps/db/src/logseq/db/sqlite/common_db.cljs

@@ -1,7 +1,10 @@
 (ns logseq.db.sqlite.common-db
   "Common sqlite db fns for browser and node"
   (:require [datascript.core :as d]
-            [logseq.db.frontend.schema :as db-schema]))
+            [logseq.db.frontend.schema :as db-schema]
+            ["path" :as node-path]
+            [clojure.string :as string]
+            [logseq.db.sqlite.util :as sqlite-util]))
 
 (defn get-initial-data
   "Returns initial data as vec of datoms"
@@ -23,4 +26,18 @@
   "Given a datascript storage, returns a datascript connection for it"
   [storage]
   (or (d/restore-conn storage)
-      (d/create-conn db-schema/schema-for-db-based-graph {:storage storage})))
+      (d/create-conn db-schema/schema-for-db-based-graph {:storage storage})))
+
+(defn sanitize-db-name
+  [db-name]
+  (-> db-name
+      (string/replace sqlite-util/db-version-prefix "")
+      (string/replace "/" "_")
+      (string/replace "\\" "_")
+      (string/replace ":" "_")))  ;; windows
+
+(defn get-db-full-path
+  [graphs-dir db-name]
+  (let [db-name' (sanitize-db-name db-name)
+        graph-dir (node-path/join graphs-dir db-name')]
+    [db-name' (node-path/join graph-dir "db.sqlite")]))

+ 4 - 10
deps/db/src/logseq/db/sqlite/db.cljs

@@ -2,9 +2,7 @@
   "Sqlite fns for db graphs"
   (:require ["path" :as node-path]
             ["better-sqlite3" :as sqlite3]
-            [clojure.string :as string]
             [logseq.db.sqlite.common-db :as sqlite-common-db]
-            [logseq.db.sqlite.util :as sqlite-util]
             ;; FIXME: datascript.core has to come before datascript.storage or else nbb fails
             [datascript.core :as d]
             [datascript.storage :refer [IStorage]]
@@ -26,13 +24,9 @@
       (.close database))
     (reset! databases nil)))
 
-(defn sanitize-db-name
-  [db-name]
-  (-> db-name
-      (string/replace sqlite-util/db-version-prefix "")
-      (string/replace "/" "_")
-      (string/replace "\\" "_")
-      (string/replace ":" "_"))) ;; windows
+(def sanitize-db-name sqlite-common-db/sanitize-db-name)
+
+(def get-db-full-path sqlite-common-db/get-db-full-path)
 
 (defn get-conn
   [repo]
@@ -101,4 +95,4 @@
       (d/transact! conn tx-data tx-meta)
       (catch :default e
         (prn :debug :error)
-        (js/console.error e)))))
+        (js/console.error e)))))

+ 1 - 4
src/electron/electron/core.cljs

@@ -303,9 +303,7 @@
 
 (defn main []
   (if-not (.requestSingleInstanceLock app)
-    (do
-      (db/close!)
-      (.quit app))
+    (.quit app)
     (let [privileges {:standard        true
                       :secure          true
                       :bypassCSP       true
@@ -333,7 +331,6 @@
                                      (logger/debug "window-all-closed" "Quitting...")
                                      (try
                                        (fs-watcher/close-watcher!)
-                                       (db/close!)
                                        (catch :default e
                                          (logger/error "window-all-closed" e)))
                                      (.quit app)))

+ 5 - 7
src/electron/electron/db.cljs

@@ -4,11 +4,9 @@
             ["fs-extra" :as fs]
             ["electron" :refer [app]]
             ;; [electron.logger :as logger]
-            [logseq.db.sqlite.db :as sqlite-db]
+            [logseq.db.sqlite.common-db :as sqlite-common-db]
             [electron.backup-file :as backup-file]))
 
-(def close! sqlite-db/close!)
-
 (defn get-graphs-dir
   []
   (let [path (.getPath ^object app "home")]
@@ -21,14 +19,14 @@
 (defn ensure-graph-dir!
   [db-name]
   (ensure-graphs-dir!)
-  (let [graph-dir (node-path/join (get-graphs-dir) (sqlite-db/sanitize-db-name db-name))]
+  (let [graph-dir (node-path/join (get-graphs-dir) (sqlite-common-db/sanitize-db-name db-name))]
     (fs/ensureDirSync graph-dir)
     graph-dir))
 
 (defn save-db!
   [db-name data]
   (let [graph-dir (ensure-graph-dir! db-name)
-        [_db-name db-path] (sqlite-db/get-db-full-path (get-graphs-dir) db-name)]
+        [_db-name db-path] (sqlite-common-db/get-db-full-path (get-graphs-dir) db-name)]
     (fs/writeFileSync db-path data)
     (backup-file/backup-file graph-dir :backup-dir
                              ""
@@ -42,7 +40,7 @@
 
 (defn unlink-graph!
   [repo]
-  (let [db-name (sqlite-db/sanitize-db-name repo)
+  (let [db-name (sqlite-common-db/sanitize-db-name repo)
         path (node-path/join (get-graphs-dir) db-name)
         unlinked (node-path/join (get-graphs-dir) unlinked-graphs-dir)
         new-path (node-path/join unlinked db-name)
@@ -52,4 +50,4 @@
                     new-path)]
     (when (fs/existsSync path)
       (fs/ensureDirSync unlinked)
-      (fs/moveSync path new-path'))))
+      (fs/moveSync path new-path'))))