1
0
mirror of https://github.com/redis/node-redis.git synced 2025-08-04 15:02:09 +03:00

Support COMMAND LIST (#2013)

* Support COMMAND LIST

* Update COMMAND_LIST.spec.ts

* add version check

* clean code

Co-authored-by: leibale <leibale1998@gmail.com>
This commit is contained in:
Avital Fine
2022-03-10 18:20:01 +01:00
committed by GitHub
parent bae54f19be
commit be51abe347
3 changed files with 90 additions and 0 deletions

View File

@@ -33,6 +33,7 @@ import * as CLUSTER_SLOTS from '../commands/CLUSTER_SLOTS';
import * as COMMAND_COUNT from '../commands/COMMAND_COUNT'; import * as COMMAND_COUNT from '../commands/COMMAND_COUNT';
import * as COMMAND_GETKEYS from '../commands/COMMAND_GETKEYS'; import * as COMMAND_GETKEYS from '../commands/COMMAND_GETKEYS';
import * as COMMAND_INFO from '../commands/COMMAND_INFO'; import * as COMMAND_INFO from '../commands/COMMAND_INFO';
import * as COMMAND_LIST from '../commands/COMMAND_LIST';
import * as COMMAND from '../commands/COMMAND'; import * as COMMAND from '../commands/COMMAND';
import * as CONFIG_GET from '../commands/CONFIG_GET'; import * as CONFIG_GET from '../commands/CONFIG_GET';
import * as CONFIG_RESETASTAT from '../commands/CONFIG_RESETSTAT'; import * as CONFIG_RESETASTAT from '../commands/CONFIG_RESETSTAT';
@@ -151,6 +152,8 @@ export default {
commandGetKeys: COMMAND_GETKEYS, commandGetKeys: COMMAND_GETKEYS,
COMMAND_INFO, COMMAND_INFO,
commandInfo: COMMAND_INFO, commandInfo: COMMAND_INFO,
COMMAND_LIST,
commandList: COMMAND_LIST,
COMMAND, COMMAND,
command: COMMAND, command: COMMAND,
CONFIG_GET, CONFIG_GET,

View File

@@ -0,0 +1,56 @@
import { strict as assert } from 'assert';
import testUtils, { GLOBAL } from '../test-utils';
import { transformArguments, FilterBy } from './COMMAND_LIST';
describe('COMMAND LIST', () => {
testUtils.isVersionGreaterThanHook([7, 0]);
describe('transformArguments', () => {
it('simple', () => {
assert.deepEqual(
transformArguments(),
['COMMAND', 'LIST']
);
});
describe('with FILTERBY', () => {
it('MODULE', () => {
assert.deepEqual(
transformArguments({
filterBy: FilterBy.MODULE,
value: 'json'
}),
['COMMAND', 'LIST', 'FILTERBY', 'MODULE', 'json']
);
});
it('ACLCAT', () => {
assert.deepEqual(
transformArguments({
filterBy: FilterBy.ACLCAT,
value: 'admin'
}),
['COMMAND', 'LIST', 'FILTERBY', 'ACLCAT', 'admin']
);
});
it('PATTERN', () => {
assert.deepEqual(
transformArguments({
filterBy: FilterBy.PATTERN,
value: 'a*'
}),
['COMMAND', 'LIST', 'FILTERBY', 'PATTERN', 'a*']
);
});
});
});
testUtils.testWithClient('client.commandList', async client => {
const commandList = await client.commandList();
assert.ok(Array.isArray(commandList));
for (const command of commandList) {
assert.ok(typeof command === 'string');
}
}, GLOBAL.SERVERS.OPEN);
});

View File

@@ -0,0 +1,31 @@
import { RedisCommandArguments } from '.';
export const IS_READ_ONLY = true;
export enum FilterBy {
MODULE = 'MODULE',
ACLCAT = 'ACLCAT',
PATTERN = 'PATTERN'
}
interface Filter {
filterBy: FilterBy;
value: string;
}
export function transformArguments(filter?: Filter): RedisCommandArguments {
const args = ['COMMAND', 'LIST'];
if (filter) {
args.push(
'FILTERBY',
filter.filterBy,
filter.value
);
}
return args;
}
export declare function transformReply(): Array<string>;