From 436ff540396f07b6ddff69fff91af2ffb0335f71 Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Wed, 13 Dec 2023 01:34:45 +0800 Subject: [PATCH] fix: save db to disk when remove a graph --- src/electron/electron/handler.cljs | 4 -- src/main/electron/listener.cljs | 5 --- src/main/frontend/db/persist.cljs | 9 +++-- .../db/rtc/full_upload_download_graph.cljs | 2 +- src/main/frontend/db_worker.cljs | 34 ++++++++-------- src/main/frontend/handler/events.cljs | 16 ++++---- src/main/frontend/handler/repo.cljs | 39 ++++++++++--------- .../frontend/modules/outliner/pipeline.cljs | 3 +- src/main/frontend/persist_db.cljs | 11 ++---- src/main/frontend/persist_db/browser.cljs | 25 +++++------- 10 files changed, 65 insertions(+), 83 deletions(-) diff --git a/src/electron/electron/handler.cljs b/src/electron/electron/handler.cljs index a2e520f1a..204301933 100644 --- a/src/electron/electron/handler.cljs +++ b/src/electron/electron/handler.cljs @@ -579,10 +579,6 @@ (logger/info ::quick-and-install) (.quitAndInstall autoUpdater)) -(defmethod handle :graphUnlinked [^js _win [_ repo]] - (doseq [window (win/get-all-windows)] - (utils/send-to-renderer window "graphUnlinked" (bean/->clj repo)))) - (defmethod handle :graphHasOtherWindow [^js win [_ graph]] (let [dir (utils/get-graph-dir graph)] (win/graph-has-other-windows? win dir))) diff --git a/src/main/electron/listener.cljs b/src/main/electron/listener.cljs index c04ebf232..33ab63ab9 100644 --- a/src/main/electron/listener.cljs +++ b/src/main/electron/listener.cljs @@ -77,11 +77,6 @@ comp [:div (str payload)]] (notification/show! comp type false)))) - (safe-api-call "graphUnlinked" - (fn [data] - (let [repo (bean/->clj data)] - (repo-handler/remove-repo! repo)))) - (safe-api-call "rebuildSearchIndice" (fn [_data] (prn "Rebuild search indices") diff --git a/src/main/frontend/db/persist.cljs b/src/main/frontend/db/persist.cljs index 537ed91c5..81fccd41f 100644 --- a/src/main/frontend/db/persist.cljs +++ b/src/main/frontend/db/persist.cljs @@ -39,10 +39,11 @@ [graph] (let [key (db-conn/datascript-db graph) db-based? (config/db-based-graph? graph)] - (persist-db/c (persist-db/c (persist-db/vec [iter] +(defn- iter->vec [iter] (when iter (p/loop [acc []] (p/let [elem (.next iter)] @@ -157,6 +143,20 @@ (rest dirs))] (p/recur result dirs))))))) +(defn- create-or-open-db! + [repo] + (when-not (get-sqlite-conn repo) + (p/let [^js pool ( + (p/let [_ (persist-db/InBrowser)) @@ -43,7 +40,5 @@ ;; @shuyu Do we still need this? (defn c]] [frontend.persist-db.protocol :as protocol] [frontend.config :as config] [promesa.core :as p] @@ -53,14 +52,8 @@ (defrecord InBrowser [] protocol/PersistentDB ( (.createOrOpenDB sqlite repo) - (p/then (fn [_result] - (prn "SQLite db created or opened successfully: " repo))) - (p/catch (fn [error] - (js/console.error error) - (notification/show! [:div (str "SQLiteDB creation error: " error)] :error) - nil))))) + (when-let [^js sqlite @*sqlite] + (.createOrOpenDB sqlite repo))) (c - (p/let [_ (.transact sqlite repo (pr-str tx-data) (pr-str tx-meta))] - nil)))) + (let [^js sqlite @*sqlite] + (p/let [_ (when sqlite (.transact sqlite repo (pr-str tx-data) (pr-str tx-meta)))] + nil))) ( (p/let [data (.exportDB sqlite repo)] - (if (:return-data? opts) - data - (