From b0fb3bd63f03fa8befce1113d313a04da459295c Mon Sep 17 00:00:00 2001 From: Avital Fine <98389525+Avital-Fine@users.noreply.github.com> Date: Wed, 30 Mar 2022 12:31:26 +0200 Subject: [PATCH] Support COMMAND GETKEYSANDFLAGS (#2039) * Support COMMAND GETKEYSANDFLAGS * Update COMMAND_GETKEYSANDFLAGS.spec.ts remove '.only' * clean code Co-authored-by: leibale --- packages/client/lib/client/commands.ts | 3 +++ .../commands/COMMAND_GETKEYSANDFLAGS.spec.ts | 24 +++++++++++++++++++ .../lib/commands/COMMAND_GETKEYSANDFLAGS.ts | 24 +++++++++++++++++++ 3 files changed, 51 insertions(+) create mode 100644 packages/client/lib/commands/COMMAND_GETKEYSANDFLAGS.spec.ts create mode 100644 packages/client/lib/commands/COMMAND_GETKEYSANDFLAGS.ts diff --git a/packages/client/lib/client/commands.ts b/packages/client/lib/client/commands.ts index b03cc83230..eefa134658 100644 --- a/packages/client/lib/client/commands.ts +++ b/packages/client/lib/client/commands.ts @@ -48,6 +48,7 @@ import * as CLUSTER_SETSLOT from '../commands/CLUSTER_SETSLOT'; import * as CLUSTER_SLOTS from '../commands/CLUSTER_SLOTS'; import * as COMMAND_COUNT from '../commands/COMMAND_COUNT'; import * as COMMAND_GETKEYS from '../commands/COMMAND_GETKEYS'; +import * as COMMAND_GETKEYSANDFLAGS from '../commands/COMMAND_GETKEYSANDFLAGS'; import * as COMMAND_INFO from '../commands/COMMAND_INFO'; import * as COMMAND_LIST from '../commands/COMMAND_LIST'; import * as COMMAND from '../commands/COMMAND'; @@ -199,6 +200,8 @@ export default { commandCount: COMMAND_COUNT, COMMAND_GETKEYS, commandGetKeys: COMMAND_GETKEYS, + COMMAND_GETKEYSANDFLAGS, + commandGetKeysAndFlags: COMMAND_GETKEYSANDFLAGS, COMMAND_INFO, commandInfo: COMMAND_INFO, COMMAND_LIST, diff --git a/packages/client/lib/commands/COMMAND_GETKEYSANDFLAGS.spec.ts b/packages/client/lib/commands/COMMAND_GETKEYSANDFLAGS.spec.ts new file mode 100644 index 0000000000..19bc27d5f9 --- /dev/null +++ b/packages/client/lib/commands/COMMAND_GETKEYSANDFLAGS.spec.ts @@ -0,0 +1,24 @@ +import { strict as assert } from 'assert'; +import testUtils, { GLOBAL } from '../test-utils'; +import { transformArguments } from './COMMAND_GETKEYSANDFLAGS'; + +describe('COMMAND GETKEYSANDFLAGS', () => { + testUtils.isVersionGreaterThanHook([7, 0]); + + it('transformArguments', () => { + assert.deepEqual( + transformArguments(['GET', 'key']), + ['COMMAND', 'GETKEYSANDFLAGS', 'GET', 'key'] + ); + }); + + testUtils.testWithClient('client.commandGetKeysAndFlags', async client => { + assert.deepEqual( + await client.commandGetKeysAndFlags(['GET', 'key']), + [{ + key: 'key', + flags: ['RO', 'access'] + }] + ); + }, GLOBAL.SERVERS.OPEN); +}); diff --git a/packages/client/lib/commands/COMMAND_GETKEYSANDFLAGS.ts b/packages/client/lib/commands/COMMAND_GETKEYSANDFLAGS.ts new file mode 100644 index 0000000000..96b28186cc --- /dev/null +++ b/packages/client/lib/commands/COMMAND_GETKEYSANDFLAGS.ts @@ -0,0 +1,24 @@ +import { RedisCommandArgument, RedisCommandArguments } from '.'; + +export const IS_READ_ONLY = true; + +export function transformArguments(args: Array): RedisCommandArguments { + return ['COMMAND', 'GETKEYSANDFLAGS', ...args]; +} + +type KeysAndFlagsRawReply = Array<[ + RedisCommandArgument, + RedisCommandArguments +]>; + +type KeysAndFlagsReply = Array<{ + key: RedisCommandArgument; + flags: RedisCommandArguments; +}>; + +export function transformReply(reply: KeysAndFlagsRawReply): KeysAndFlagsReply { + return reply.map(([key, flags]) => ({ + key, + flags + })); +}