From e3ee1d2763bbb8cf129d095cdfd157f417ffc4df Mon Sep 17 00:00:00 2001 From: shacharPash Date: Tue, 16 May 2023 16:10:29 +0300 Subject: [PATCH 1/5] Support JSON.MERGE Command --- packages/json/lib/commands/MERGE.spec.ts | 19 +++++++++++++++++++ packages/json/lib/commands/MERGE.ts | 9 +++++++++ packages/json/lib/commands/index.ts | 3 +++ 3 files changed, 31 insertions(+) create mode 100644 packages/json/lib/commands/MERGE.spec.ts create mode 100644 packages/json/lib/commands/MERGE.ts diff --git a/packages/json/lib/commands/MERGE.spec.ts b/packages/json/lib/commands/MERGE.spec.ts new file mode 100644 index 00000000000..650fb4e8730 --- /dev/null +++ b/packages/json/lib/commands/MERGE.spec.ts @@ -0,0 +1,19 @@ +import { strict as assert } from 'assert'; +import testUtils, { GLOBAL } from '../test-utils'; +import { transformArguments } from './MERGE'; + +describe('MERGE', () => { + it('transformArguments', () => { + assert.deepEqual( + transformArguments('key', '$', 1), + ['JSON.MERGE', 'key', '$', '1'] + ); + }); + + testUtils.testWithClient('client.json.merge', async client => { + assert.equal( + await client.json.merge('key', '$', 'json'), + 'OK' + ); + }, GLOBAL.SERVERS.OPEN); +}); \ No newline at end of file diff --git a/packages/json/lib/commands/MERGE.ts b/packages/json/lib/commands/MERGE.ts new file mode 100644 index 00000000000..1aada1f5200 --- /dev/null +++ b/packages/json/lib/commands/MERGE.ts @@ -0,0 +1,9 @@ +import { RedisJSON, transformRedisJsonArgument } from '.'; + +export const FIRST_KEY_INDEX = 1; + +export function transformArguments(key: string, path: string, json: RedisJSON): Array { + return ['JSON.MERGE', key, path, transformRedisJsonArgument(json)]; +} + +export declare function transformReply(): 'OK' | null; \ No newline at end of file diff --git a/packages/json/lib/commands/index.ts b/packages/json/lib/commands/index.ts index efcf156b84d..cc9dc824ca2 100644 --- a/packages/json/lib/commands/index.ts +++ b/packages/json/lib/commands/index.ts @@ -9,6 +9,7 @@ import * as DEL from './DEL'; import * as FORGET from './FORGET'; import * as GET from './GET'; import * as MGET from './MGET'; +import * as MERGE from './MERGE'; import * as NUMINCRBY from './NUMINCRBY'; import * as NUMMULTBY from './NUMMULTBY'; import * as OBJKEYS from './OBJKEYS'; @@ -40,6 +41,8 @@ export default { forget: FORGET, GET, get: GET, + MERGE, + merge: MERGE, MGET, mGet: MGET, NUMINCRBY, From 01660b1b328d020821bfc35ef050f576c2b3d416 Mon Sep 17 00:00:00 2001 From: shacharPash Date: Tue, 16 May 2023 16:33:12 +0300 Subject: [PATCH 2/5] test only 2.6+ ReJson version --- packages/json/lib/commands/MERGE.spec.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/json/lib/commands/MERGE.spec.ts b/packages/json/lib/commands/MERGE.spec.ts index 650fb4e8730..18db3c83d03 100644 --- a/packages/json/lib/commands/MERGE.spec.ts +++ b/packages/json/lib/commands/MERGE.spec.ts @@ -3,6 +3,8 @@ import testUtils, { GLOBAL } from '../test-utils'; import { transformArguments } from './MERGE'; describe('MERGE', () => { + testUtils.isVersionGreaterThanHook([2, 6]); + it('transformArguments', () => { assert.deepEqual( transformArguments('key', '$', 1), From cee764e5a193c2dfc1e29c4ea1c9cd8e88faa7cb Mon Sep 17 00:00:00 2001 From: shacharPash Date: Tue, 16 May 2023 17:03:38 +0300 Subject: [PATCH 3/5] test on edge --- packages/json/lib/test-utils.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/json/lib/test-utils.ts b/packages/json/lib/test-utils.ts index f4c4e4eb201..97e189eed81 100644 --- a/packages/json/lib/test-utils.ts +++ b/packages/json/lib/test-utils.ts @@ -3,7 +3,8 @@ import RedisJSON from '.'; export default new TestUtils({ dockerImageName: 'redislabs/rejson', - dockerImageVersionArgument: 'rejson-version' + dockerImageVersionArgument: 'rejson-version', + defaultDockerVersion: 'edge' }); export const GLOBAL = { From a79847fc2cf2c7521afe1bb5eef92cb04b6cbe48 Mon Sep 17 00:00:00 2001 From: shacharPash Date: Thu, 18 May 2023 13:14:56 +0300 Subject: [PATCH 4/5] review --- packages/json/lib/commands/MERGE.spec.ts | 2 +- packages/json/lib/commands/MERGE.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/json/lib/commands/MERGE.spec.ts b/packages/json/lib/commands/MERGE.spec.ts index 18db3c83d03..ee5e6fff86d 100644 --- a/packages/json/lib/commands/MERGE.spec.ts +++ b/packages/json/lib/commands/MERGE.spec.ts @@ -18,4 +18,4 @@ describe('MERGE', () => { 'OK' ); }, GLOBAL.SERVERS.OPEN); -}); \ No newline at end of file +}); diff --git a/packages/json/lib/commands/MERGE.ts b/packages/json/lib/commands/MERGE.ts index 1aada1f5200..81cce7f006b 100644 --- a/packages/json/lib/commands/MERGE.ts +++ b/packages/json/lib/commands/MERGE.ts @@ -6,4 +6,4 @@ export function transformArguments(key: string, path: string, json: RedisJSON): return ['JSON.MERGE', key, path, transformRedisJsonArgument(json)]; } -export declare function transformReply(): 'OK' | null; \ No newline at end of file +export declare function transformReply(): 'OK'; From edee89f757e9bfb85614af99c253a6376c73d38f Mon Sep 17 00:00:00 2001 From: Leibale Eidelman Date: Mon, 18 Sep 2023 17:47:38 -0400 Subject: [PATCH 5/5] Update test-utils.ts --- packages/json/lib/test-utils.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/json/lib/test-utils.ts b/packages/json/lib/test-utils.ts index 97e189eed81..f4c4e4eb201 100644 --- a/packages/json/lib/test-utils.ts +++ b/packages/json/lib/test-utils.ts @@ -3,8 +3,7 @@ import RedisJSON from '.'; export default new TestUtils({ dockerImageName: 'redislabs/rejson', - dockerImageVersionArgument: 'rejson-version', - defaultDockerVersion: 'edge' + dockerImageVersionArgument: 'rejson-version' }); export const GLOBAL = {