Skip to content

Commit b0fb3bd

Browse files
Avital-Fineleibale
andauthored
Support COMMAND GETKEYSANDFLAGS (#2039)
* Support COMMAND GETKEYSANDFLAGS * Update COMMAND_GETKEYSANDFLAGS.spec.ts remove '.only' * clean code Co-authored-by: leibale <leibale1998@gmail.com>
1 parent 18ec52d commit b0fb3bd

File tree

3 files changed

+51
-0
lines changed

3 files changed

+51
-0
lines changed

packages/client/lib/client/commands.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ import * as CLUSTER_SETSLOT from '../commands/CLUSTER_SETSLOT';
4848
import * as CLUSTER_SLOTS from '../commands/CLUSTER_SLOTS';
4949
import * as COMMAND_COUNT from '../commands/COMMAND_COUNT';
5050
import * as COMMAND_GETKEYS from '../commands/COMMAND_GETKEYS';
51+
import * as COMMAND_GETKEYSANDFLAGS from '../commands/COMMAND_GETKEYSANDFLAGS';
5152
import * as COMMAND_INFO from '../commands/COMMAND_INFO';
5253
import * as COMMAND_LIST from '../commands/COMMAND_LIST';
5354
import * as COMMAND from '../commands/COMMAND';
@@ -199,6 +200,8 @@ export default {
199200
commandCount: COMMAND_COUNT,
200201
COMMAND_GETKEYS,
201202
commandGetKeys: COMMAND_GETKEYS,
203+
COMMAND_GETKEYSANDFLAGS,
204+
commandGetKeysAndFlags: COMMAND_GETKEYSANDFLAGS,
202205
COMMAND_INFO,
203206
commandInfo: COMMAND_INFO,
204207
COMMAND_LIST,
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import { strict as assert } from 'assert';
2+
import testUtils, { GLOBAL } from '../test-utils';
3+
import { transformArguments } from './COMMAND_GETKEYSANDFLAGS';
4+
5+
describe('COMMAND GETKEYSANDFLAGS', () => {
6+
testUtils.isVersionGreaterThanHook([7, 0]);
7+
8+
it('transformArguments', () => {
9+
assert.deepEqual(
10+
transformArguments(['GET', 'key']),
11+
['COMMAND', 'GETKEYSANDFLAGS', 'GET', 'key']
12+
);
13+
});
14+
15+
testUtils.testWithClient('client.commandGetKeysAndFlags', async client => {
16+
assert.deepEqual(
17+
await client.commandGetKeysAndFlags(['GET', 'key']),
18+
[{
19+
key: 'key',
20+
flags: ['RO', 'access']
21+
}]
22+
);
23+
}, GLOBAL.SERVERS.OPEN);
24+
});
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import { RedisCommandArgument, RedisCommandArguments } from '.';
2+
3+
export const IS_READ_ONLY = true;
4+
5+
export function transformArguments(args: Array<RedisCommandArgument>): RedisCommandArguments {
6+
return ['COMMAND', 'GETKEYSANDFLAGS', ...args];
7+
}
8+
9+
type KeysAndFlagsRawReply = Array<[
10+
RedisCommandArgument,
11+
RedisCommandArguments
12+
]>;
13+
14+
type KeysAndFlagsReply = Array<{
15+
key: RedisCommandArgument;
16+
flags: RedisCommandArguments;
17+
}>;
18+
19+
export function transformReply(reply: KeysAndFlagsRawReply): KeysAndFlagsReply {
20+
return reply.map(([key, flags]) => ({
21+
key,
22+
flags
23+
}));
24+
}

0 commit comments

Comments
 (0)