diff --git a/packages/client/lib/commands/CONFIG_SET.spec.ts b/packages/client/lib/commands/CONFIG_SET.spec.ts index 3127e9732b..93a7a6ff25 100644 --- a/packages/client/lib/commands/CONFIG_SET.spec.ts +++ b/packages/client/lib/commands/CONFIG_SET.spec.ts @@ -2,10 +2,23 @@ import { strict as assert } from 'assert'; import { transformArguments } from './CONFIG_SET'; describe('CONFIG SET', () => { - it('transformArguments', () => { - assert.deepEqual( - transformArguments('parameter', 'value'), - ['CONFIG', 'SET', 'parameter', 'value'] - ); + describe('transformArguments', () => { + it('set one parameter (old version)', () => { + assert.deepEqual( + transformArguments('parameter', 'value'), + ['CONFIG', 'SET', 'parameter', 'value'] + ); + }); + + it('set muiltiple parameters', () => { + assert.deepEqual( + transformArguments({ + 1: 'a', + 2: 'b', + 3: 'c' + }), + ['CONFIG', 'SET', '1', 'a', '2', 'b', '3', 'c'] + ); + }); }); }); diff --git a/packages/client/lib/commands/CONFIG_SET.ts b/packages/client/lib/commands/CONFIG_SET.ts index ec09e4469f..41f40d035d 100644 --- a/packages/client/lib/commands/CONFIG_SET.ts +++ b/packages/client/lib/commands/CONFIG_SET.ts @@ -1,5 +1,23 @@ -export function transformArguments(parameter: string, value: string): Array { - return ['CONFIG', 'SET', parameter, value]; +import { RedisCommandArgument, RedisCommandArguments } from '.'; + +type SingleParameter = [parameter: RedisCommandArgument, value: RedisCommandArgument]; + +type MultipleParameters = [config: Record]; + +export function transformArguments( + ...[parameterOrConfig, value]: SingleParameter | MultipleParameters +): RedisCommandArguments { + const args: RedisCommandArguments = ['CONFIG', 'SET']; + + if (typeof parameterOrConfig === 'string') { + args.push(parameterOrConfig, value!); + } else { + for (const [key, value] of Object.entries(parameterOrConfig)) { + args.push(key, value); + } + } + + return args; } export declare function transformReply(): string;