feat(dev): export client-ops sqlite from db worker

This commit is contained in:
Tienson Qin
2026-04-09 03:28:05 +08:00
parent 8e0114a793
commit 82e13b6989
5 changed files with 139 additions and 3 deletions

View File

@@ -352,3 +352,31 @@
(finally
(reset! db-sync/*repo->latest-remote-tx latest-tx-prev)
(reset! db-sync/*repo->latest-remote-checksum latest-checksum-prev)))))))
(deftest thread-api-export-client-ops-db-checkpoints-and-exports-client-ops-file-test
(async done
(restoring-worker-state
(fn []
(let [export-client-ops-db (@thread-api/*thread-apis :thread-api/export-client-ops-db)
sql-calls (atom [])
export-calls (atom [])
expected-data (js/Uint8Array. #js [1 2 3])
expected-buffer (.-buffer expected-data)
fake-pool #js {:exportFile (fn [path]
(swap! export-calls conj path)
expected-buffer)}]
(reset! worker-state/*opfs-pools {test-repo fake-pool})
(with-redefs [worker-state/get-sqlite-conn (fn [_repo which-db]
(when (= :client-ops which-db)
#js {:exec (fn [sql]
(swap! sql-calls conj sql))}))]
(-> (export-client-ops-db test-repo)
(p/then (fn [result]
(is (= ["PRAGMA wal_checkpoint(2)"] @sql-calls))
(is (= ["client-ops-/db.sqlite"] @export-calls))
(is (instance? js/Uint8Array result))
(is (= [1 2 3] (vec result)))
(done)))
(p/catch (fn [error]
(is false (str error))
(done))))))))))