Przeglądaj źródła

enhance: group state by graphs

Tienson Qin 1 rok temu
rodzic
commit
dc53b78a37
1 zmienionych plików z 17 dodań i 7 usunięć
  1. 17 7
      src/main/frontend/db_worker.cljs

+ 17 - 7
src/main/frontend/db_worker.cljs

@@ -15,19 +15,27 @@
 
 (defonce *sqlite (atom nil))
 (defonce *sqlite-conns (atom nil))
-(defonce *datascript-conn (atom nil))
-(defonce *opfs-pool (atom nil))
+(defonce *datascript-conns (atom nil))
+(defonce *opfs-pools (atom nil))
 
 (defn- get-sqlite-conn
   [repo]
   (get @*sqlite-conns repo))
 
+(defn get-datascript-conn
+  [repo]
+  (get @*datascript-conns repo))
+
+(defn get-opfs-pool
+  [repo]
+  (get @*opfs-pools repo))
+
 (defn- <get-opfs-pool
   [graph]
-  (or @*opfs-pool
+  (or (get-opfs-pool graph)
       (p/let [^js pool (.installOpfsSAHPoolVfs @*sqlite #js {:name (str "logseq-pool-" graph)
                                                              :initialCapacity 10})]
-        (reset! *opfs-pool pool)
+        (swap! *opfs-pools assoc graph pool)
         pool)))
 
 (defn- init-sqlite-module!
@@ -101,7 +109,9 @@
   [repo]
   (doseq [[r db] @*sqlite-conns]
     (when-not (= repo r)
+      (swap! *datascript-conns dissoc r)
       (swap! *sqlite-conns dissoc r)
+      (swap! *opfs-pools dissoc r)
       (.close ^Object db))))
 
 (defn- close-db!
@@ -121,7 +131,7 @@
       (.exec db "create table if not exists kvs (addr INTEGER primary key, content TEXT)")
       (let [conn (or (d/restore-conn storage)
                      (d/create-conn db-schema/schema-for-db-based-graph {:storage storage}))]
-        (reset! *datascript-conn conn)
+        (swap! *datascript-conns assoc repo conn)
         nil))))
 
 (defn iter->vec [iter]
@@ -226,7 +236,7 @@
 
   (transact
    [_this repo tx-data tx-meta]
-   (when-let [conn @*datascript-conn]
+   (when-let [conn (get-datascript-conn repo)]
      (try
        (let [tx-data (edn/read-string tx-data)
              tx-meta (edn/read-string tx-meta)]
@@ -238,7 +248,7 @@
 
   (getInitialData
    [_this repo]
-   (when-let [conn @*datascript-conn]
+   (when-let [conn (get-datascript-conn repo)]
      (let [db @conn]
        (->> (d/datoms db :eavt)
             vec