You've already forked node-redis
mirror of
https://github.com/redis/node-redis.git
synced 2025-08-09 00:22:08 +03:00
fix #1660 - add support for client.HSET('key', 'field', 'value')
This commit is contained in:
@@ -4,6 +4,13 @@ import { TestRedisServers, itWithClient, TestRedisClusters, itWithCluster } from
|
|||||||
|
|
||||||
describe('HSET', () => {
|
describe('HSET', () => {
|
||||||
describe('transformArguments', () => {
|
describe('transformArguments', () => {
|
||||||
|
it('field, value', () => {
|
||||||
|
assert.deepEqual(
|
||||||
|
transformArguments('key', 'field', 'value'),
|
||||||
|
['HSET', 'key', 'field', 'value']
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
it('Map', () => {
|
it('Map', () => {
|
||||||
assert.deepEqual(
|
assert.deepEqual(
|
||||||
transformArguments('key', new Map([['field', 'value']])),
|
transformArguments('key', new Map([['field', 'value']])),
|
||||||
@@ -30,7 +37,7 @@ describe('HSET', () => {
|
|||||||
|
|
||||||
itWithClient(TestRedisServers.OPEN, 'client.hSet', async client => {
|
itWithClient(TestRedisServers.OPEN, 'client.hSet', async client => {
|
||||||
assert.equal(
|
assert.equal(
|
||||||
await client.hSet('key', { field: 'value' }),
|
await client.hSet('key', 'field', 'value'),
|
||||||
1
|
1
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
@@ -1,3 +1,4 @@
|
|||||||
|
import { TransformArgumentsReply } from '.';
|
||||||
import { transformReplyString } from './generic-transformers';
|
import { transformReplyString } from './generic-transformers';
|
||||||
|
|
||||||
type HSETObject = Record<string | number, string | number>;
|
type HSETObject = Record<string | number, string | number>;
|
||||||
@@ -8,10 +9,18 @@ type HSETTuples = Array<[string, string]> | Array<string>;
|
|||||||
|
|
||||||
export const FIRST_KEY_INDEX = 1;
|
export const FIRST_KEY_INDEX = 1;
|
||||||
|
|
||||||
export function transformArguments(key: string, value: HSETObject | HSETMap | HSETTuples): Array<string> {
|
type GenericArguments = [key: string];
|
||||||
|
|
||||||
|
type SingleFieldArguments = [...generic: GenericArguments, field: string, value: string];
|
||||||
|
|
||||||
|
type MultipleFieldsArguments = [...generic: GenericArguments, value: HSETObject | HSETMap | HSETTuples];
|
||||||
|
|
||||||
|
export function transformArguments(...[ key, value, fieldValue ]: SingleFieldArguments | MultipleFieldsArguments): TransformArgumentsReply {
|
||||||
const args = ['HSET', key];
|
const args = ['HSET', key];
|
||||||
|
|
||||||
if (value instanceof Map) {
|
if (typeof value === 'string') {
|
||||||
|
args.push(value, fieldValue!);
|
||||||
|
} else if (value instanceof Map) {
|
||||||
pushMap(args, value);
|
pushMap(args, value);
|
||||||
} else if (Array.isArray(value)) {
|
} else if (Array.isArray(value)) {
|
||||||
pushTuples(args, value);
|
pushTuples(args, value);
|
||||||
|
Reference in New Issue
Block a user