Skip to content

Commit 58fd118

Browse files
[CAE-686] Changed hsetex function signature for better consistency with other commands
1 parent 4d354fe commit 58fd118

File tree

2 files changed

+26
-38
lines changed

2 files changed

+26
-38
lines changed

packages/client/lib/commands/HSETEX.spec.ts

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -6,63 +6,63 @@ import HSETEX from './HSETEX';
66
describe('HSETEX parseCommand', () => {
77
it('hSetEx parseCommand base', () => {
88
const parser = new BasicCommandParser;
9-
HSETEX.parseCommand(parser, 'key', {}, 'field', 'value');
9+
HSETEX.parseCommand(parser, 'key', ['field', 'value']);
1010
assert.deepEqual(parser.redisArgs, ['HSETEX', 'key', 'FIELDS', '1', 'field', 'value']);
1111
});
1212

1313
it('hSetEx parseCommand base empty obj', () => {
1414
const parser = new BasicCommandParser;
15-
assert.throws(() => {HSETEX.parseCommand(parser, 'key', {}, {})});
15+
assert.throws(() => {HSETEX.parseCommand(parser, 'key', {})});
1616
});
1717

1818
it('hSetEx parseCommand base one key obj', () => {
1919
const parser = new BasicCommandParser;
20-
HSETEX.parseCommand(parser, 'key', {}, {'k': 'v'});
20+
HSETEX.parseCommand(parser, 'key', {'k': 'v'});
2121
assert.deepEqual(parser.redisArgs, ['HSETEX', 'key', 'FIELDS', '1', 'k', 'v']);
2222
});
2323

2424
it('hSetEx parseCommand array', () => {
2525
const parser = new BasicCommandParser;
26-
HSETEX.parseCommand(parser, 'key', {}, ['field1', 'value1', 'field2', 'value2']);
26+
HSETEX.parseCommand(parser, 'key', ['field1', 'value1', 'field2', 'value2']);
2727
assert.deepEqual(parser.redisArgs, ['HSETEX', 'key', 'FIELDS', '2', 'field1', 'value1', 'field2', 'value2']);
2828
});
2929

30-
it('hSetEx parseCommand array invalid args, thows error', () => {
30+
it('hSetEx parseCommand array invalid args, throws an error', () => {
3131
const parser = new BasicCommandParser;
32-
assert.throws(() => {HSETEX.parseCommand(parser, 'key', {}, ['field1', 'value1', 'field2'])});
32+
assert.throws(() => {HSETEX.parseCommand(parser, 'key', ['field1', 'value1', 'field2'])});
3333
});
3434

3535
it('hSetEx parseCommand array in array', () => {
3636
const parser1 = new BasicCommandParser;
37-
HSETEX.parseCommand(parser1, 'key', {}, [['field1', 'value1'], ['field2', 'value2']]);
37+
HSETEX.parseCommand(parser1, 'key', [['field1', 'value1'], ['field2', 'value2']]);
3838
assert.deepEqual(parser1.redisArgs, ['HSETEX', 'key', 'FIELDS', '2', 'field1', 'value1', 'field2', 'value2']);
3939

4040
const parser2 = new BasicCommandParser;
41-
HSETEX.parseCommand(parser2, 'key', {}, [['field1', 'value1'], ['field2', 'value2'], ['field3', 'value3']]);
41+
HSETEX.parseCommand(parser2, 'key', [['field1', 'value1'], ['field2', 'value2'], ['field3', 'value3']]);
4242
assert.deepEqual(parser2.redisArgs, ['HSETEX', 'key', 'FIELDS', '3', 'field1', 'value1', 'field2', 'value2', 'field3', 'value3']);
4343
});
4444

4545
it('hSetEx parseCommand map', () => {
4646
const parser1 = new BasicCommandParser;
47-
HSETEX.parseCommand(parser1, 'key', {}, new Map([['field1', 'value1'], ['field2', 'value2']]));
47+
HSETEX.parseCommand(parser1, 'key', new Map([['field1', 'value1'], ['field2', 'value2']]));
4848
assert.deepEqual(parser1.redisArgs, ['HSETEX', 'key', 'FIELDS', '2', 'field1', 'value1', 'field2', 'value2']);
4949
});
5050

5151
it('hSetEx parseCommand obj', () => {
5252
const parser1 = new BasicCommandParser;
53-
HSETEX.parseCommand(parser1, 'key', {}, {field1: "value1", field2: "value2"});
53+
HSETEX.parseCommand(parser1, 'key', {field1: "value1", field2: "value2"});
5454
assert.deepEqual(parser1.redisArgs, ['HSETEX', 'key', 'FIELDS', '2', 'field1', 'value1', 'field2', 'value2']);
5555
});
5656

5757
it('hSetEx parseCommand options FNX KEEPTTL', () => {
5858
const parser = new BasicCommandParser;
59-
HSETEX.parseCommand(parser, 'key', {mode: 'FNX', expiration: 'KEEPTTL'}, 'field', 'value');
59+
HSETEX.parseCommand(parser, 'key', ['field', 'value'], {mode: 'FNX', expiration: 'KEEPTTL'});
6060
assert.deepEqual(parser.redisArgs, ['HSETEX', 'key', 'FNX', 'KEEPTTL', 'FIELDS', '1', 'field', 'value']);
6161
});
6262

6363
it('hSetEx parseCommand options FXX EX 500', () => {
6464
const parser = new BasicCommandParser;
65-
HSETEX.parseCommand(parser, 'key', {mode: 'FXX', expiration: {type: 'EX', value: 500}}, 'field', 'value');
65+
HSETEX.parseCommand(parser, 'key', ['field', 'value'], {mode: 'FXX', expiration: {type: 'EX', value: 500}});
6666
assert.deepEqual(parser.redisArgs, ['HSETEX', 'key', 'FXX', 'EX', '500', 'FIELDS', '1', 'field', 'value']);
6767
});
6868
});
@@ -72,27 +72,27 @@ describe('HSETEX parseCommand', () => {
7272
describe.skip('HSETEX call', () => {
7373
testUtils.testWithClientIfVersionWithinRange([[8], 'LATEST'], 'hSetEx calls', async client => {
7474
assert.deepEqual(
75-
await client.hSetEx('key', {expiration: {type: "EX", value: 500}, mode: "FNX"}, 'filed1', 'value1'),
75+
await client.hSetEx('key', ['f1', 'f2'], {expiration: {type: "EX", value: 500}, mode: "FNX"}),
7676
1
7777
);
7878

7979
assert.deepEqual(
80-
await client.hSetEx('key', {expiration: {type: "EX", value: 500}, mode: "FXX"}, ['filed1', 'value1', 'field2', 'value2']),
80+
await client.hSetEx('key', ['field1', 'value1', 'field2', 'value2'], {expiration: {type: "EX", value: 500}, mode: "FXX"}),
8181
0
8282
);
8383

8484
assert.deepEqual(
85-
await client.hSetEx('key', {expiration: {type: "EX", value: 500}, mode: "FNX"}, ['filed1', 'value1', 'field2', 'value2']),
85+
await client.hSetEx('key', ['field1', 'value1', 'field2', 'value2'], {expiration: {type: "EX", value: 500}, mode: "FNX"}),
8686
1
8787
);
8888

8989
assert.deepEqual(
90-
await client.hSetEx('key', {expiration: {type: "EX", value: 500}, mode: "FNX"}, 'filed2', 'value2'),
90+
await client.hSetEx('key', ['field2', 'value2'], {expiration: {type: "EX", value: 500}, mode: "FNX"}),
9191
1
9292
);
9393

9494
assert.deepEqual(
95-
await client.hSetEx('key', {expiration: {type: "EX", value: 500}, mode: "FXX"}, ['filed1', 'value1', 'field2', 'value2']),
95+
await client.hSetEx('key', ['field1', 'value1', 'field2', 'value2'], {expiration: {type: "EX", value: 500}, mode: "FXX"}),
9696
1
9797
);
9898
}, GLOBAL.SERVERS.OPEN);

packages/client/lib/commands/HSETEX.ts

Lines changed: 9 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -19,16 +19,12 @@ type HSETEXMap = Map<HashTypes, HashTypes>;
1919

2020
type HSETEXTuples = Array<[HashTypes, HashTypes]> | Array<HashTypes>;
2121

22-
type SingleFieldArguments = [field: HashTypes, value: HashTypes];
23-
24-
type MultipleFieldsArguments = [value: HSETEXObject | HSETEXMap | HSETEXTuples];
25-
2622
export default {
2723
parseCommand(
2824
parser: CommandParser,
2925
key: RedisArgument,
30-
options?: HSetExOptions,
31-
...[value, fieldValue]: SingleFieldArguments | MultipleFieldsArguments
26+
fields: HSETEXObject | HSETEXMap | HSETEXTuples,
27+
options?: HSetExOptions
3228
) {
3329
parser.push('HSETEX');
3430
parser.pushKey(key);
@@ -50,21 +46,13 @@ export default {
5046
}
5147

5248
parser.push('FIELDS')
53-
if (typeof value === 'string' || typeof value === 'number' || value instanceof Buffer) {
54-
parser.push(
55-
'1',
56-
convertValue(value),
57-
convertValue(fieldValue!)
58-
);
59-
} else if (typeof value === 'undefined' || typeof value === null) {
60-
throw Error('passed undefined or null object')
61-
} else if (value instanceof Map) {
62-
pushMap(parser, value);
63-
} else if (Array.isArray(value)) {
64-
pushTuples(parser, value);
65-
} else {
66-
pushObject(parser, value);
67-
}
49+
if (fields instanceof Map) {
50+
pushMap(parser, fields);
51+
} else if (Array.isArray(fields)) {
52+
pushTuples(parser, fields);
53+
} else {
54+
pushObject(parser, fields);
55+
}
6856
},
6957
transformReply: undefined as unknown as () => NumberReply<0 | 1>
7058
} as const satisfies Command;

0 commit comments

Comments
 (0)