enhance: export-db can either return data or save the file to disk

feat/datascript-storage-test
Tienson Qin 2023-12-11 18:45:48 +08:00
parent f2c7cad4a5
commit 5712d84b0b
6 changed files with 19 additions and 15 deletions

View File

@ -31,11 +31,9 @@
[electron.utils :as utils]
[electron.window :as win]
[electron.handler-interface :refer [handle]]
[logseq.db.sqlite.db :as sqlite-db]
[logseq.db.sqlite.util :as sqlite-util]
[logseq.common.graph :as common-graph]
[promesa.core :as p]
[datascript.transit :as dt]))
[promesa.core :as p]))
(defmethod handle :mkdir [_window [_ dir]]
(fs/mkdirSync dir))

View File

@ -95,7 +95,7 @@
(.send web-contents "persist-zoom-level" (.getZoomLevel web-contents))
(.send web-contents "persistent-dbs"))
(async/go
(let [result (async/<! state/persistent-dbs-chan)]
(let [_ (async/<! state/persistent-dbs-chan)]
(destroy-window! win)
(when @*quitting?
(async/put! state/persistent-dbs-chan true)))))

View File

@ -40,7 +40,7 @@
(if (config/db-based-graph? repo)
(->
(p/do!
(persistent-db/<export-db repo)
(persistent-db/<export-db repo {})
(ipc/ipc "persistent-dbs-saved"))
(p/catch error-handler))
;; TODO: Move all file based graphs to use the above persist approach

View File

@ -3,7 +3,8 @@
(:require [frontend.persist-db.browser :as browser]
[frontend.persist-db.protocol :as protocol]
[promesa.core :as p]
[frontend.state :as state]))
[frontend.state :as state]
[frontend.util :as util]))
(defonce opfs-db (browser/->InBrowser))
@ -30,8 +31,8 @@
ret)))
(defn <export-db
[repo]
(protocol/<export-db (get-impl) repo))
[repo opts]
(protocol/<export-db (get-impl) repo opts))
(defn <import-db
[repo data]
@ -42,8 +43,8 @@
(defn <new [repo]
{:pre [(<= (count repo) 56)]}
(p/do!
(let [current-repo (state/get-current-repo)]
(when-not (= repo current-repo)
;; switch graph
(<export-db current-repo))
(let [current-repo (state/get-current-repo)]
(when (and (util/electron?) (not= repo current-repo))
;; switch graph
(<export-db current-repo {}))
(protocol/<new (get-impl) repo))))

View File

@ -44,6 +44,9 @@
(util/electron?)
(ipc/ipc :db-export repo data)
;; nfs-supported? auto backup
;;
:else
nil))
@ -90,10 +93,12 @@
(js/console.error error)
(notification/show! [:div (str "SQLiteDB fetch error: " error)] :error) {})))))
(<export-db [_this repo]
(<export-db [_this repo opts]
(when-let [^js sqlite @*sqlite]
(-> (p/let [data (.exportDB sqlite repo)]
(<export-db! repo data))
(if (:return-data? opts)
data
(<export-db! repo data)))
(p/catch (fn [error]
(prn :debug :save-db-error repo)
(js/console.error error)

View File

@ -7,5 +7,5 @@
(<unsafe-delete [this repo] "Delete graph and its vfs")
(<transact-data [this repo tx-data tx-meta] "Transact data to db")
(<fetch-initial-data [this repo opts] "Fetch Initial data")
(<export-db [this repo] "Save SQLite db")
(<export-db [this repo opts] "Save or get SQLite db")
(<import-db [this repo data] "Import SQLite db"))