aboutsummaryrefslogtreecommitdiff
path: root/packages/taler-wallet-core/src/db-utils.ts
diff options
context:
space:
mode:
authorFlorian Dold <florian@dold.me>2022-09-23 21:00:51 +0200
committerFlorian Dold <florian@dold.me>2022-09-23 21:00:51 +0200
commit8d19b801538e2be842ebe2d03ca464f72bb95edb (patch)
treea4afe95634ff1d893afd56a5a3a78580c46be0a3 /packages/taler-wallet-core/src/db-utils.ts
parent72336b149b4c27715e4e2f7610ec4007ecccdbd9 (diff)
wallet-core: backwards compatibility for bankAccounts store, naming conventions
Diffstat (limited to 'packages/taler-wallet-core/src/db-utils.ts')
-rw-r--r--packages/taler-wallet-core/src/db-utils.ts26
1 files changed, 25 insertions, 1 deletions
diff --git a/packages/taler-wallet-core/src/db-utils.ts b/packages/taler-wallet-core/src/db-utils.ts
index 2cb1b12fe..88960e6b1 100644
--- a/packages/taler-wallet-core/src/db-utils.ts
+++ b/packages/taler-wallet-core/src/db-utils.ts
@@ -70,7 +70,31 @@ function upgradeFromStoreMap(
return;
}
logger.info(`upgrading database from ${oldVersion} to ${newVersion}`);
- throw Error("upgrade not supported");
+ for (const n in storeMap) {
+ const swi: StoreWithIndexes<any, StoreDescriptor<unknown>, any> = storeMap[
+ n
+ ];
+ const storeDesc: StoreDescriptor<unknown> = swi.store;
+ const storeAddedVersion = storeDesc.versionAdded ?? 0;
+ if (storeAddedVersion <= oldVersion) {
+ continue;
+ }
+ const s = db.createObjectStore(swi.storeName, {
+ autoIncrement: storeDesc.autoIncrement,
+ keyPath: storeDesc.keyPath,
+ });
+ for (const indexName in swi.indexMap as any) {
+ const indexDesc: IndexDescriptor = swi.indexMap[indexName];
+ const indexAddedVersion = indexDesc.versionAdded ?? 0;
+ if (indexAddedVersion <= oldVersion) {
+ continue;
+ }
+ s.createIndex(indexDesc.name, indexDesc.keyPath, {
+ multiEntry: indexDesc.multiEntry,
+ unique: indexDesc.unique,
+ });
+ }
+ }
}
function promiseFromTransaction(transaction: IDBTransaction): Promise<void> {