From 94ef428b564f8ba60c2752fb7ca64f804f88baf2 Mon Sep 17 00:00:00 2001 From: Heyang Zhou Date: Fri, 24 Mar 2023 20:06:27 +0800 Subject: fix(ext/kv): add missing `getMany` method (#18410) The `getMany` method was missing from the implementation of the `Deno.Kv` class. This patch fixes it. --- ext/kv/01_db.ts | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) (limited to 'ext') 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 { + 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); -- cgit v1.2.3