mirror of https://github.com/logseq/logseq
enhance: export-db can either return data or save the file to disk
parent
f2c7cad4a5
commit
5712d84b0b
|
@ -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))
|
||||
|
|
|
@ -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)))))
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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))))
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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"))
|
||||
|
|
Loading…
Reference in New Issue