|
|
@@ -1,7 +1,6 @@
|
|
|
(ns ^:node-only logseq.db.sqlite.db
|
|
|
"Sqlite fns for db graphs"
|
|
|
- (:require ["fs" :as fs]
|
|
|
- ["fs-extra" :as fs-extra*]
|
|
|
+ (:require ["fs-extra" :as fs-extra]
|
|
|
["path" :as node-path]
|
|
|
[logseq.db.sqlite.common-db :as sqlite-common-db]
|
|
|
;; FIXME: datascript.core has to come before datascript.storage or else nbb fails
|
|
|
@@ -12,9 +11,6 @@
|
|
|
[logseq.db.frontend.schema :as db-schema]
|
|
|
[logseq.db.sqlite.util :as sqlite-util]))
|
|
|
|
|
|
-;; Reference same sqlite default class in cljs + nbb without needing .cljc
|
|
|
-(def fs-extra (if (find-ns 'nbb.core) (aget fs-extra* "default") fs-extra*))
|
|
|
-
|
|
|
;; datascript conns
|
|
|
(defonce conns (atom nil))
|
|
|
|
|
|
@@ -25,8 +21,8 @@
|
|
|
(let [db-name' (sanitize-db-name db-name)
|
|
|
graph-dir (node-path/join graphs-dir db-name')
|
|
|
graph-db-dir (node-path/join graph-dir "db")]
|
|
|
- (when-not (fs/existsSync graph-db-dir)
|
|
|
- ((aget fs-extra "mkdirSync") graph-db-dir))
|
|
|
+ (when-not (fs-extra/pathExistsSync graph-db-dir)
|
|
|
+ (fs-extra/mkdirSync graph-db-dir))
|
|
|
[db-name' graph-db-dir]))
|
|
|
|
|
|
(defn get-conn
|
|
|
@@ -38,23 +34,22 @@
|
|
|
[graph-dir data delete-addrs]
|
|
|
(doseq [addr delete-addrs]
|
|
|
(let [path (node-path/join graph-dir (str addr))]
|
|
|
- (when (fs/existsSync path)
|
|
|
- ((aget fs-extra "removeSync") path))))
|
|
|
+ (when (fs-extra/pathExistsSync path)
|
|
|
+ (fs-extra/removeSync path))))
|
|
|
(doseq [[addr content] data]
|
|
|
(let [path (node-path/join graph-dir (str addr))]
|
|
|
- (fs/writeFileSync path content))))
|
|
|
+ (fs-extra/writeFileSync path content))))
|
|
|
|
|
|
(defn restore-data-from-addr
|
|
|
[graph-dir addr]
|
|
|
- (let [addr-path (node-path/join graph-dir (str addr))]
|
|
|
- (when-let [content (and (fs/existsSync addr-path) (.toString (fs/readFileSync addr-path)))]
|
|
|
- (try
|
|
|
- (let [data (sqlite-util/transit-read content)]
|
|
|
- (if-let [addresses (:addresses data)]
|
|
|
- (assoc data :addresses (clj->js addresses))
|
|
|
- data))
|
|
|
- (catch :default _e ; TODO: remove this once db goes to test
|
|
|
- (edn/read-string content))))))
|
|
|
+ (when-let [content (.toString (fs-extra/readFileSync (node-path/join graph-dir (str addr))))]
|
|
|
+ (try
|
|
|
+ (let [data (sqlite-util/transit-read content)]
|
|
|
+ (if-let [addresses (:addresses data)]
|
|
|
+ (assoc data :addresses (clj->js addresses))
|
|
|
+ data))
|
|
|
+ (catch :default _e ; TODO: remove this once db goes to test
|
|
|
+ (edn/read-string content)))))
|
|
|
|
|
|
(defn new-file-storage
|
|
|
"Creates a datascript storage for files."
|