diff options
Diffstat (limited to 'src/util/query.ts')
-rw-r--r-- | src/util/query.ts | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/src/util/query.ts b/src/util/query.ts index 5726bcaa6..6942d471e 100644 --- a/src/util/query.ts +++ b/src/util/query.ts @@ -351,15 +351,32 @@ class TransactionHandle { } } +export function runWithReadTransaction<T>( + db: IDBDatabase, + stores: Store<any>[], + f: (t: TransactionHandle) => Promise<T>, +): Promise<T> { + return runWithTransaction<T>(db, stores, f, "readonly"); +} + export function runWithWriteTransaction<T>( db: IDBDatabase, stores: Store<any>[], f: (t: TransactionHandle) => Promise<T>, ): Promise<T> { + return runWithTransaction<T>(db, stores, f, "readwrite"); +} + +function runWithTransaction<T>( + db: IDBDatabase, + stores: Store<any>[], + f: (t: TransactionHandle) => Promise<T>, + mode: "readonly" | "readwrite", +): Promise<T> { const stack = Error("Failed transaction was started here."); return new Promise((resolve, reject) => { const storeName = stores.map(x => x.name); - const tx = db.transaction(storeName, "readwrite"); + const tx = db.transaction(storeName, mode); let funResult: any = undefined; let gotFunResult: boolean = false; tx.oncomplete = () => { |