From 292160f7e979a0d9fdea7430f0d26b2dc1122a16 Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Mon, 16 Nov 2020 14:12:37 +0100 Subject: fix tip record creation, migrate DB --- packages/taler-wallet-core/src/util/query.ts | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) (limited to 'packages/taler-wallet-core/src/util/query.ts') diff --git a/packages/taler-wallet-core/src/util/query.ts b/packages/taler-wallet-core/src/util/query.ts index 6ebc3bbc4..f533c4cfd 100644 --- a/packages/taler-wallet-core/src/util/query.ts +++ b/packages/taler-wallet-core/src/util/query.ts @@ -44,14 +44,25 @@ const logger = new Logger("query.ts"); */ export const TransactionAbort = Symbol("transaction_abort"); +export interface StoreParams { + validator?: (v: T) => T; + autoIncrement?: boolean; + keyPath?: string | string[] | null; + + /** + * Database version that this store was added in, or + * undefined if added in the first version. + */ + versionAdded?: number; +} + /** * Definition of an object store. */ export class Store { constructor( public name: string, - public storeParams?: IDBObjectStoreParameters, - public validator?: (v: T) => T, + public storeParams?: StoreParams, ) {} } @@ -66,6 +77,12 @@ export interface IndexOptions { * Defaults to false. */ multiEntry?: boolean; + + /** + * Database version that this store was added in, or + * undefined if added in the first version. + */ + versionAdded?: number; } function requestToPromise(req: IDBRequest): Promise { @@ -425,6 +442,7 @@ export function openDatabase( db: IDBDatabase, oldVersion: number, newVersion: number, + upgradeTransaction: IDBTransaction, ) => void, ): Promise { return new Promise((resolve, reject) => { @@ -449,7 +467,11 @@ export function openDatabase( if (!newVersion) { throw Error("upgrade needed, but new version unknown"); } - onUpgradeNeeded(db, e.oldVersion, newVersion); + const transaction = req.transaction; + if (!transaction) { + throw Error("no transaction handle available in upgrade handler"); + } + onUpgradeNeeded(db, e.oldVersion, newVersion, transaction); }; }); } -- cgit v1.2.3