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

Support JSON.MERGE Command

This commit is contained in:
shacharPash
2023-05-17 13:43:48 +03:00
parent e3ee1d2763
commit 40c7df04c7
4 changed files with 53 additions and 1 deletions

View File

@@ -0,0 +1,24 @@
import { strict as assert } from 'assert';
import testUtils, { GLOBAL } from '../test-utils';
import { transformArguments } from './MSET';
describe('MSET', () => {
testUtils.isVersionGreaterThanHook([2, 6]);
describe('transformArguments', () => {
it('transformArguments', () => {
assert.deepEqual(
transformArguments([{ key: "key", path: "$", value: "json" }, { key: "key2", path: "$", value: "json2" }]),
['JSON.MSET', 'key', '$', '"json"', 'key2', '$', '"json2"']
);
});
});
testUtils.testWithClient('client.json.mSet', async client => {
assert.equal(
await client.json.mSet([{ key: "key", path: "$", value: "json" }, { key: "key2", path: "$", value: "json2" }]),
'OK'
);
}, GLOBAL.SERVERS.OPEN);
});

View File

@@ -0,0 +1,24 @@
import { RedisJSON, transformRedisJsonArgument } from '.';
export const FIRST_KEY_INDEX = 1;
export interface KeyPathValue {
key: string;
path: string;
value: RedisJSON;
}
export function transformArguments(keyPathValues: Array<KeyPathValue>): Array<string> {
if (keyPathValues.length === 0) {
throw new Error('ERR wrong number of arguments for \'MSET\' command');
}
const args: string[] = keyPathValues.flatMap(({ key, path, value }) => [
key,
path,
transformRedisJsonArgument(value)
]);
return args;
}
export declare function transformReply(): 'OK' | null;

View File

@@ -9,6 +9,7 @@ import * as DEL from './DEL';
import * as FORGET from './FORGET'; import * as FORGET from './FORGET';
import * as GET from './GET'; import * as GET from './GET';
import * as MGET from './MGET'; import * as MGET from './MGET';
import * as MSET from './MSET';
import * as MERGE from './MERGE'; import * as MERGE from './MERGE';
import * as NUMINCRBY from './NUMINCRBY'; import * as NUMINCRBY from './NUMINCRBY';
import * as NUMMULTBY from './NUMMULTBY'; import * as NUMMULTBY from './NUMMULTBY';
@@ -45,6 +46,8 @@ export default {
merge: MERGE, merge: MERGE,
MGET, MGET,
mGet: MGET, mGet: MGET,
MSET,
mSet: MSET,
NUMINCRBY, NUMINCRBY,
numIncrBy: NUMINCRBY, numIncrBy: NUMINCRBY,
NUMMULTBY, NUMMULTBY,

View File

@@ -3,7 +3,8 @@ import RedisJSON from '.';
export default new TestUtils({ export default new TestUtils({
dockerImageName: 'redislabs/rejson', dockerImageName: 'redislabs/rejson',
dockerImageVersionArgument: 'rejson-version' dockerImageVersionArgument: 'rejson-version',
defaultDockerVersion: 'edge'
}); });
export const GLOBAL = { export const GLOBAL = {