summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
Diffstat (limited to 'ext')
-rw-r--r--ext/kv/01_db.ts30
1 files changed, 30 insertions, 0 deletions
diff --git a/ext/kv/01_db.ts b/ext/kv/01_db.ts
index 571a1b3cd..b423a2553 100644
--- a/ext/kv/01_db.ts
+++ b/ext/kv/01_db.ts
@@ -72,6 +72,36 @@ class Kv {
return deserializeValue(entries[0]);
}
+ async getMany(
+ keys: Deno.KvKey[],
+ opts?: { consistency?: Deno.KvConsistencyLevel },
+ ): Promise<Deno.KvEntry[]> {
+ keys = keys.map(convertKey);
+ const ranges: RawKvEntry[][] = await core.opAsync(
+ "op_kv_snapshot_read",
+ this.#rid,
+ keys.map((key) => [
+ null,
+ key,
+ null,
+ 1,
+ false,
+ null,
+ ]),
+ opts?.consistency ?? "strong",
+ );
+ return ranges.map((entries, i) => {
+ if (!entries.length) {
+ return {
+ key: keys[i],
+ value: null,
+ versionstamp: null,
+ };
+ }
+ return deserializeValue(entries[0]);
+ });
+ }
+
async set(key: Deno.KvKey, value: unknown) {
key = convertKey(key);
value = serializeValue(value);