Skip to content

Commit be51abe

Browse files
Avital-Fineleibale
andauthored
Support COMMAND LIST (#2013)
* Support COMMAND LIST * Update COMMAND_LIST.spec.ts * add version check * clean code Co-authored-by: leibale <[email protected]>
1 parent bae54f1 commit be51abe

File tree

3 files changed

+90
-0
lines changed

3 files changed

+90
-0
lines changed

packages/client/lib/client/commands.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ import * as CLUSTER_SLOTS from '../commands/CLUSTER_SLOTS';
3333
import * as COMMAND_COUNT from '../commands/COMMAND_COUNT';
3434
import * as COMMAND_GETKEYS from '../commands/COMMAND_GETKEYS';
3535
import * as COMMAND_INFO from '../commands/COMMAND_INFO';
36+
import * as COMMAND_LIST from '../commands/COMMAND_LIST';
3637
import * as COMMAND from '../commands/COMMAND';
3738
import * as CONFIG_GET from '../commands/CONFIG_GET';
3839
import * as CONFIG_RESETASTAT from '../commands/CONFIG_RESETSTAT';
@@ -151,6 +152,8 @@ export default {
151152
commandGetKeys: COMMAND_GETKEYS,
152153
COMMAND_INFO,
153154
commandInfo: COMMAND_INFO,
155+
COMMAND_LIST,
156+
commandList: COMMAND_LIST,
154157
COMMAND,
155158
command: COMMAND,
156159
CONFIG_GET,
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
import { strict as assert } from 'assert';
2+
import testUtils, { GLOBAL } from '../test-utils';
3+
import { transformArguments, FilterBy } from './COMMAND_LIST';
4+
5+
describe('COMMAND LIST', () => {
6+
testUtils.isVersionGreaterThanHook([7, 0]);
7+
8+
describe('transformArguments', () => {
9+
it('simple', () => {
10+
assert.deepEqual(
11+
transformArguments(),
12+
['COMMAND', 'LIST']
13+
);
14+
});
15+
16+
describe('with FILTERBY', () => {
17+
it('MODULE', () => {
18+
assert.deepEqual(
19+
transformArguments({
20+
filterBy: FilterBy.MODULE,
21+
value: 'json'
22+
}),
23+
['COMMAND', 'LIST', 'FILTERBY', 'MODULE', 'json']
24+
);
25+
});
26+
27+
it('ACLCAT', () => {
28+
assert.deepEqual(
29+
transformArguments({
30+
filterBy: FilterBy.ACLCAT,
31+
value: 'admin'
32+
}),
33+
['COMMAND', 'LIST', 'FILTERBY', 'ACLCAT', 'admin']
34+
);
35+
});
36+
37+
it('PATTERN', () => {
38+
assert.deepEqual(
39+
transformArguments({
40+
filterBy: FilterBy.PATTERN,
41+
value: 'a*'
42+
}),
43+
['COMMAND', 'LIST', 'FILTERBY', 'PATTERN', 'a*']
44+
);
45+
});
46+
});
47+
});
48+
49+
testUtils.testWithClient('client.commandList', async client => {
50+
const commandList = await client.commandList();
51+
assert.ok(Array.isArray(commandList));
52+
for (const command of commandList) {
53+
assert.ok(typeof command === 'string');
54+
}
55+
}, GLOBAL.SERVERS.OPEN);
56+
});
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import { RedisCommandArguments } from '.';
2+
3+
export const IS_READ_ONLY = true;
4+
5+
export enum FilterBy {
6+
MODULE = 'MODULE',
7+
ACLCAT = 'ACLCAT',
8+
PATTERN = 'PATTERN'
9+
}
10+
11+
interface Filter {
12+
filterBy: FilterBy;
13+
value: string;
14+
}
15+
16+
17+
export function transformArguments(filter?: Filter): RedisCommandArguments {
18+
const args = ['COMMAND', 'LIST'];
19+
20+
if (filter) {
21+
args.push(
22+
'FILTERBY',
23+
filter.filterBy,
24+
filter.value
25+
);
26+
}
27+
28+
return args;
29+
}
30+
31+
export declare function transformReply(): Array<string>;

0 commit comments

Comments
 (0)