aboutsummaryrefslogtreecommitdiff
path: root/packages/taler-wallet-core/src/util/query.ts
diff options
context:
space:
mode:
authorFlorian Dold <florian@dold.me>2021-08-06 17:15:46 +0200
committerFlorian Dold <florian@dold.me>2021-08-06 17:15:46 +0200
commit06db37640e9932f9d2595ffa7c3cefe2204326db (patch)
tree55aebb32b6516b5287f6df892360503ea5f5433b /packages/taler-wallet-core/src/util/query.ts
parent05e52d4e116222728d9bcba3bcbf9e441bb4e4ed (diff)
downloadwallet-core-06db37640e9932f9d2595ffa7c3cefe2204326db.tar.xz
perf: do bulk read
Diffstat (limited to 'packages/taler-wallet-core/src/util/query.ts')
-rw-r--r--packages/taler-wallet-core/src/util/query.ts11
1 files changed, 11 insertions, 0 deletions
diff --git a/packages/taler-wallet-core/src/util/query.ts b/packages/taler-wallet-core/src/util/query.ts
index b76bf6b6b..a95cbf1ff 100644
--- a/packages/taler-wallet-core/src/util/query.ts
+++ b/packages/taler-wallet-core/src/util/query.ts
@@ -35,6 +35,7 @@ import {
IDBKeyPath,
} from "@gnu-taler/idb-bridge";
import { Logger } from "@gnu-taler/taler-util";
+import { performanceNow } from "./timer.js";
const logger = new Logger("query.ts");
@@ -298,6 +299,7 @@ export function describeIndex(
interface IndexReadOnlyAccessor<RecordType> {
iter(query?: IDBValidKey): ResultStream<RecordType>;
get(query: IDBValidKey): Promise<RecordType | undefined>;
+ getAll(query: IDBValidKey, count?: number): Promise<RecordType[]>;
}
type GetIndexReadOnlyAccess<RecordType, IndexMap> = {
@@ -307,6 +309,7 @@ type GetIndexReadOnlyAccess<RecordType, IndexMap> = {
interface IndexReadWriteAccessor<RecordType> {
iter(query: IDBValidKey): ResultStream<RecordType>;
get(query: IDBValidKey): Promise<RecordType | undefined>;
+ getAll(query: IDBValidKey, count?: number): Promise<RecordType[]>;
}
type GetIndexReadWriteAccess<RecordType, IndexMap> = {
@@ -484,6 +487,10 @@ function makeReadContext(
.openCursor(query);
return new ResultStream<any>(req);
},
+ getAll(query, count) {
+ const req = tx.objectStore(storeName).index(indexName).getAll(query, count);
+ return requestToPromise(req);
+ }
};
}
ctx[storeAlias] = {
@@ -526,6 +533,10 @@ function makeWriteContext(
.openCursor(query);
return new ResultStream<any>(req);
},
+ getAll(query, count) {
+ const req = tx.objectStore(storeName).index(indexName).getAll(query, count);
+ return requestToPromise(req);
+ }
};
}
ctx[storeAlias] = {