From 934993b02586a9515a4f92fe4adc1899e9efb9ac Mon Sep 17 00:00:00 2001 From: Avital-Fine Date: Wed, 16 Mar 2022 11:27:38 +0100 Subject: [PATCH 1/3] Support ZINTERCARD and SINTERCARD --- packages/client/lib/cluster/commands.ts | 6 ++++ .../client/lib/commands/SINTERCARD.spec.ts | 30 +++++++++++++++++++ packages/client/lib/commands/SINTERCARD.ts | 21 +++++++++++++ .../client/lib/commands/ZINTERCARD.spec.ts | 30 +++++++++++++++++++ packages/client/lib/commands/ZINTERCARD.ts | 21 +++++++++++++ 5 files changed, 108 insertions(+) create mode 100644 packages/client/lib/commands/SINTERCARD.spec.ts create mode 100644 packages/client/lib/commands/SINTERCARD.ts create mode 100644 packages/client/lib/commands/ZINTERCARD.spec.ts create mode 100644 packages/client/lib/commands/ZINTERCARD.ts diff --git a/packages/client/lib/cluster/commands.ts b/packages/client/lib/cluster/commands.ts index b8893d9710e..bbfe237b094 100644 --- a/packages/client/lib/cluster/commands.ts +++ b/packages/client/lib/cluster/commands.ts @@ -98,6 +98,7 @@ import * as SETEX from '../commands/SETEX'; import * as SETNX from '../commands/SETNX'; import * as SETRANGE from '../commands/SETRANGE'; import * as SINTER from '../commands/SINTER'; +import * as SINTERCARD from '../commands/SINTERCARD'; import * as SINTERSTORE from '../commands/SINTERSTORE'; import * as SISMEMBER from '../commands/SISMEMBER'; import * as SMEMBERS from '../commands/SMEMBERS'; @@ -149,6 +150,7 @@ import * as ZDIFFSTORE from '../commands/ZDIFFSTORE'; import * as ZINCRBY from '../commands/ZINCRBY'; import * as ZINTER_WITHSCORES from '../commands/ZINTER_WITHSCORES'; import * as ZINTER from '../commands/ZINTER'; +import * as ZINTERCARD from '../commands/ZINTERCARD'; import * as ZINTERSTORE from '../commands/ZINTERSTORE'; import * as ZLEXCOUNT from '../commands/ZLEXCOUNT'; import * as ZMSCORE from '../commands/ZMSCORE'; @@ -366,6 +368,8 @@ export default { sDiffStore: SDIFFSTORE, SINTER, sInter: SINTER, + SINTERCARD, + sInterCard: SINTERCARD, SINTERSTORE, sInterStore: SINTERSTORE, SET, @@ -478,6 +482,8 @@ export default { zInterWithScores: ZINTER_WITHSCORES, ZINTER, zInter: ZINTER, + ZINTERCARD, + zInterCard: ZINTERCARD, ZINTERSTORE, zInterStore: ZINTERSTORE, ZLEXCOUNT, diff --git a/packages/client/lib/commands/SINTERCARD.spec.ts b/packages/client/lib/commands/SINTERCARD.spec.ts new file mode 100644 index 00000000000..cfbc6c897a7 --- /dev/null +++ b/packages/client/lib/commands/SINTERCARD.spec.ts @@ -0,0 +1,30 @@ +import { strict as assert } from 'assert'; +import testUtils, { GLOBAL } from '../test-utils'; +import { transformArguments } from './SINTERCARD'; + +describe('SINTERCARD', () => { + testUtils.isVersionGreaterThanHook([7, 0]); + + describe('transformArguments', () => { + it('simple', () => { + assert.deepEqual( + transformArguments(['set1', 'set2']), + ['SINTERCARD', '2', 'set1', 'set2'] + ); + }); + + it('with limit', () => { + assert.deepEqual( + transformArguments(['set1', 'set2'], 1), + ['SINTERCARD', '2', 'set1', 'set2', 'LIMIT', '1'] + ); + }); + }); + + testUtils.testWithClient('client.sInterCard', async client => { + assert.deepEqual( + await client.sInterCard('key'), + 0 + ); + }, GLOBAL.SERVERS.OPEN); +}); diff --git a/packages/client/lib/commands/SINTERCARD.ts b/packages/client/lib/commands/SINTERCARD.ts new file mode 100644 index 00000000000..71661c9b97c --- /dev/null +++ b/packages/client/lib/commands/SINTERCARD.ts @@ -0,0 +1,21 @@ +import { RedisCommandArgument, RedisCommandArguments } from '.'; +import { pushVerdictArgument } from './generic-transformers'; + +export const FIRST_KEY_INDEX = 2; + +export const IS_READ_ONLY = true; + +export function transformArguments( + keys: Array | RedisCommandArgument, + limit?: number +): RedisCommandArguments { + const args = pushVerdictArgument(['SINTERCARD'], keys); + + if (limit) { + args.push('LIMIT', limit.toString()); + } + + return args; +} + +export declare function transformReply(): Number; diff --git a/packages/client/lib/commands/ZINTERCARD.spec.ts b/packages/client/lib/commands/ZINTERCARD.spec.ts new file mode 100644 index 00000000000..c8d76e9242f --- /dev/null +++ b/packages/client/lib/commands/ZINTERCARD.spec.ts @@ -0,0 +1,30 @@ +import { strict as assert } from 'assert'; +import testUtils, { GLOBAL } from '../test-utils'; +import { transformArguments } from './ZINTERCARD'; + +describe('ZINTERCARD', () => { + testUtils.isVersionGreaterThanHook([7, 0]); + + describe('transformArguments', () => { + it('simple', () => { + assert.deepEqual( + transformArguments(['zset1', 'zset2']), + ['ZINTERCARD', '2', 'zset1', 'zset2'] + ); + }); + + it('with limit', () => { + assert.deepEqual( + transformArguments(['zset1', 'zset2'], 1), + ['ZINTERCARD', '2', 'zset1', 'zset2', 'LIMIT', '1'] + ); + }); + }); + + testUtils.testWithClient('client.zInterCard', async client => { + assert.deepEqual( + await client.zInterCard('key'), + 0 + ); + }, GLOBAL.SERVERS.OPEN); +}); diff --git a/packages/client/lib/commands/ZINTERCARD.ts b/packages/client/lib/commands/ZINTERCARD.ts new file mode 100644 index 00000000000..2b36c6ebae0 --- /dev/null +++ b/packages/client/lib/commands/ZINTERCARD.ts @@ -0,0 +1,21 @@ +import { RedisCommandArgument, RedisCommandArguments } from '.'; +import { pushVerdictArgument } from './generic-transformers'; + +export const FIRST_KEY_INDEX = 2; + +export const IS_READ_ONLY = true; + +export function transformArguments( + keys: Array | RedisCommandArgument, + limit?: number +): RedisCommandArguments { + const args = pushVerdictArgument(['ZINTERCARD'], keys); + + if (limit) { + args.push('LIMIT', limit.toString()); + } + + return args; +} + +export declare function transformReply(): Number; From 120b7c0efe72e6f1bf31def537c7e053a74c8a65 Mon Sep 17 00:00:00 2001 From: leibale Date: Sun, 20 Mar 2022 17:26:32 +0200 Subject: [PATCH 2/3] clean code --- packages/client/lib/commands/SINTERCARD.ts | 2 +- packages/client/lib/commands/ZINTERCARD.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/client/lib/commands/SINTERCARD.ts b/packages/client/lib/commands/SINTERCARD.ts index 71661c9b97c..ddb7e5b00ef 100644 --- a/packages/client/lib/commands/SINTERCARD.ts +++ b/packages/client/lib/commands/SINTERCARD.ts @@ -18,4 +18,4 @@ export function transformArguments( return args; } -export declare function transformReply(): Number; +export declare function transformReply(): number; diff --git a/packages/client/lib/commands/ZINTERCARD.ts b/packages/client/lib/commands/ZINTERCARD.ts index 2b36c6ebae0..ff45ab2aa01 100644 --- a/packages/client/lib/commands/ZINTERCARD.ts +++ b/packages/client/lib/commands/ZINTERCARD.ts @@ -18,4 +18,4 @@ export function transformArguments( return args; } -export declare function transformReply(): Number; +export declare function transformReply(): number; From dda6cf65f9db89b5572048d62745137d6ca4d2ed Mon Sep 17 00:00:00 2001 From: leibale Date: Sun, 20 Mar 2022 17:28:01 +0200 Subject: [PATCH 3/3] clean code --- packages/client/lib/commands/SINTERCARD.spec.ts | 8 ++++---- packages/client/lib/commands/ZINTERCARD.spec.ts | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/packages/client/lib/commands/SINTERCARD.spec.ts b/packages/client/lib/commands/SINTERCARD.spec.ts index cfbc6c897a7..24bd6cb8081 100644 --- a/packages/client/lib/commands/SINTERCARD.spec.ts +++ b/packages/client/lib/commands/SINTERCARD.spec.ts @@ -8,15 +8,15 @@ describe('SINTERCARD', () => { describe('transformArguments', () => { it('simple', () => { assert.deepEqual( - transformArguments(['set1', 'set2']), - ['SINTERCARD', '2', 'set1', 'set2'] + transformArguments(['1', '2']), + ['SINTERCARD', '2', '1', '2'] ); }); it('with limit', () => { assert.deepEqual( - transformArguments(['set1', 'set2'], 1), - ['SINTERCARD', '2', 'set1', 'set2', 'LIMIT', '1'] + transformArguments(['1', '2'], 1), + ['SINTERCARD', '2', '1', '2', 'LIMIT', '1'] ); }); }); diff --git a/packages/client/lib/commands/ZINTERCARD.spec.ts b/packages/client/lib/commands/ZINTERCARD.spec.ts index c8d76e9242f..a2b70616d59 100644 --- a/packages/client/lib/commands/ZINTERCARD.spec.ts +++ b/packages/client/lib/commands/ZINTERCARD.spec.ts @@ -8,15 +8,15 @@ describe('ZINTERCARD', () => { describe('transformArguments', () => { it('simple', () => { assert.deepEqual( - transformArguments(['zset1', 'zset2']), - ['ZINTERCARD', '2', 'zset1', 'zset2'] + transformArguments(['1', '2']), + ['ZINTERCARD', '2', '1', '2'] ); }); it('with limit', () => { assert.deepEqual( - transformArguments(['zset1', 'zset2'], 1), - ['ZINTERCARD', '2', 'zset1', 'zset2', 'LIMIT', '1'] + transformArguments(['1', '2'], 1), + ['ZINTERCARD', '2', '1', '2', 'LIMIT', '1'] ); }); });