summaryrefslogtreecommitdiff
path: root/packages/taler-wallet-core/src/util/query.ts
diff options
context:
space:
mode:
authorFlorian Dold <florian@dold.me>2020-11-16 14:12:37 +0100
committerFlorian Dold <florian@dold.me>2020-11-16 14:12:37 +0100
commit292160f7e979a0d9fdea7430f0d26b2dc1122a16 (patch)
treef82a576398408ebbe04d96a93355de61d745c925 /packages/taler-wallet-core/src/util/query.ts
parentcdf5cc583cd7fc938f38137da25aaee2aeaf28a9 (diff)
downloadwallet-core-292160f7e979a0d9fdea7430f0d26b2dc1122a16.tar.gz
wallet-core-292160f7e979a0d9fdea7430f0d26b2dc1122a16.tar.bz2
wallet-core-292160f7e979a0d9fdea7430f0d26b2dc1122a16.zip
fix tip record creation, migrate DB
Diffstat (limited to 'packages/taler-wallet-core/src/util/query.ts')
-rw-r--r--packages/taler-wallet-core/src/util/query.ts28
1 files changed, 25 insertions, 3 deletions
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<T> {
+ 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<T> {
constructor(
public name: string,
- public storeParams?: IDBObjectStoreParameters,
- public validator?: (v: T) => T,
+ public storeParams?: StoreParams<T>,
) {}
}
@@ -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<any> {
@@ -425,6 +442,7 @@ export function openDatabase(
db: IDBDatabase,
oldVersion: number,
newVersion: number,
+ upgradeTransaction: IDBTransaction,
) => void,
): Promise<IDBDatabase> {
return new Promise<IDBDatabase>((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);
};
});
}