|
|
@@ -127,52 +127,48 @@
|
|
|
(restore-data-from-addr repo addr))))
|
|
|
|
|
|
(defn- close-db-aux!
|
|
|
- [repo ^Object db ^Object search ^Object client-ops-db]
|
|
|
+ [repo ^Object db ^Object search]
|
|
|
(swap! *sqlite-conns dissoc repo)
|
|
|
(swap! *datascript-conns dissoc repo)
|
|
|
(when db (.close db))
|
|
|
(when search (.close search))
|
|
|
- (when client-ops-db (.close client-ops-db))
|
|
|
(when-let [^js pool (worker-state/get-opfs-pool repo)]
|
|
|
(.releaseAccessHandles pool))
|
|
|
(swap! *opfs-pools dissoc repo))
|
|
|
|
|
|
(defn- close-other-dbs!
|
|
|
[repo]
|
|
|
- (doseq [[r {:keys [db search client-ops-db]}] @*sqlite-conns]
|
|
|
+ (doseq [[r {:keys [db search]}] @*sqlite-conns]
|
|
|
(when-not (= repo r)
|
|
|
- (close-db-aux! r db search client-ops-db))))
|
|
|
+ (close-db-aux! r db search))))
|
|
|
|
|
|
(defn close-db!
|
|
|
[repo]
|
|
|
- (let [{:keys [db search client-ops-db]} (@*sqlite-conns repo)]
|
|
|
- (close-db-aux! repo db search client-ops-db)))
|
|
|
+ (let [{:keys [db search]} (@*sqlite-conns repo)]
|
|
|
+ (close-db-aux! repo db search)))
|
|
|
|
|
|
-(defn- get-dbs
|
|
|
- "Return [db search-db client-ops-db]"
|
|
|
+(defn- get-db-and-search-db
|
|
|
[repo]
|
|
|
(if @*publishing?
|
|
|
(p/let [^object DB (.-DB ^object (.-oo1 ^object @*sqlite))
|
|
|
db (new DB "/db.sqlite" "c")
|
|
|
search-db (new DB "/search-db.sqlite" "c")]
|
|
|
- [db search-db nil])
|
|
|
+ [db search-db])
|
|
|
(p/let [^js pool (<get-opfs-pool repo)
|
|
|
capacity (.getCapacity pool)
|
|
|
_ (when (zero? capacity) ; file handle already releases since pool will be initialized only once
|
|
|
(.acquireAccessHandles pool))
|
|
|
db (new (.-OpfsSAHPoolDb pool) repo-path)
|
|
|
- search-db (new (.-OpfsSAHPoolDb pool) (str "search" repo-path))
|
|
|
- client-ops-db (new (.-OpfsSAHPoolDb pool) (str "client-ops--" repo-path))]
|
|
|
- [db search-db client-ops-db])))
|
|
|
+ search-db (new (.-OpfsSAHPoolDb pool) (str "search" repo-path))]
|
|
|
+ [db search-db])))
|
|
|
|
|
|
(defn- create-or-open-db!
|
|
|
[repo {:keys [config]}]
|
|
|
(when-not (worker-state/get-sqlite-conn repo)
|
|
|
- (p/let [[db search-db client-ops-db] (get-dbs repo)
|
|
|
+ (p/let [[db search-db] (get-db-and-search-db repo)
|
|
|
storage (new-sqlite-storage repo {})]
|
|
|
(swap! *sqlite-conns assoc repo {:db db
|
|
|
- :search search-db
|
|
|
- :client-ops-db client-ops-db})
|
|
|
+ :search search-db})
|
|
|
(.exec db "PRAGMA locking_mode=exclusive")
|
|
|
(sqlite-common-db/create-kvs-table! db)
|
|
|
(search/create-tables-and-triggers! search-db)
|
|
|
@@ -259,7 +255,7 @@
|
|
|
|
|
|
(defn- get-search-db
|
|
|
[repo]
|
|
|
- (worker-state/get-sqlite-conn repo :search))
|
|
|
+ (worker-state/get-sqlite-conn repo {:search? true}))
|
|
|
|
|
|
(defn- with-write-transit-str
|
|
|
[p]
|