diff options
author | Florian Dold <florian@dold.me> | 2023-09-01 10:52:15 +0200 |
---|---|---|
committer | Florian Dold <florian@dold.me> | 2023-09-01 10:52:15 +0200 |
commit | 64e78d03a117fffeb18e18154d9028a2532285a5 (patch) | |
tree | 116d1c79b9419f114b6b5f42ce0c8eeb6e88c928 /packages/idb-bridge/src/SqliteBackend.ts | |
parent | 79973a63dd31c0d84b677a2a1511b1dffc6218b8 (diff) | |
download | wallet-core-64e78d03a117fffeb18e18154d9028a2532285a5.tar.xz |
wallet-core: implement and test stored backups
Diffstat (limited to 'packages/idb-bridge/src/SqliteBackend.ts')
-rw-r--r-- | packages/idb-bridge/src/SqliteBackend.ts | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/packages/idb-bridge/src/SqliteBackend.ts b/packages/idb-bridge/src/SqliteBackend.ts index c40281861..a25ec0045 100644 --- a/packages/idb-bridge/src/SqliteBackend.ts +++ b/packages/idb-bridge/src/SqliteBackend.ts @@ -1882,7 +1882,7 @@ export class SqliteBackend implements Backend { } } - clearObjectStore( + async clearObjectStore( btx: DatabaseTransaction, objectStoreName: string, ): Promise<void> { @@ -1906,7 +1906,21 @@ export class SqliteBackend implements Backend { ); } - throw new Error("Method not implemented."); + this._prep(sqlClearObjectStore).run({ + object_store_id: scopeInfo.objectStoreId, + }); + + for (const index of scopeInfo.indexMap.values()) { + let stmt: Sqlite3Statement; + if (index.unique) { + stmt = this._prep(sqlClearUniqueIndexData); + } else { + stmt = this._prep(sqlClearIndexData); + } + stmt.run({ + index_id: index.indexId, + }); + } } } @@ -1963,6 +1977,15 @@ CREATE TABLE IF NOT EXISTS unique_index_data ); `; +const sqlClearObjectStore = ` +DELETE FROM object_data WHERE object_store_id=$object_store_id`; + +const sqlClearIndexData = ` +DELETE FROM index_data WHERE index_id=$index_id`; + +const sqlClearUniqueIndexData = ` +DELETE FROM unique_index_data WHERE index_id=$index_id`; + const sqlListDatabases = ` SELECT name, version FROM databases; `; |