aboutsummaryrefslogtreecommitdiff
path: root/src/util/query.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/util/query.ts')
-rw-r--r--src/util/query.ts19
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 = () => {