diff --git a/packages/client/lib/cluster/commands.ts b/packages/client/lib/cluster/commands.ts index 58fa651be1b..9961b7fc0da 100644 --- a/packages/client/lib/cluster/commands.ts +++ b/packages/client/lib/cluster/commands.ts @@ -200,11 +200,13 @@ import * as ZRANGEBYSCORE_WITHSCORES from '../commands/ZRANGEBYSCORE_WITHSCORES' import * as ZRANGEBYSCORE from '../commands/ZRANGEBYSCORE'; import * as ZRANGESTORE from '../commands/ZRANGESTORE'; import * as ZRANK from '../commands/ZRANK'; +import * as ZRANK_WITHSCORE from '../commands/ZRANK_WITHSCORE'; import * as ZREM from '../commands/ZREM'; import * as ZREMRANGEBYLEX from '../commands/ZREMRANGEBYLEX'; import * as ZREMRANGEBYRANK from '../commands/ZREMRANGEBYRANK'; import * as ZREMRANGEBYSCORE from '../commands/ZREMRANGEBYSCORE'; import * as ZREVRANK from '../commands/ZREVRANK'; +import * as ZREVRANK_WITHSCORE from '../commands/ZREVRANK_WITHSCORE'; import * as ZSCAN from '../commands/ZSCAN'; import * as ZSCORE from '../commands/ZSCORE'; import * as ZUNION_WITHSCORES from '../commands/ZUNION_WITHSCORES'; @@ -614,6 +616,8 @@ export default { zRangeStore: ZRANGESTORE, ZRANK, zRank: ZRANK, + ZRANK_WITHSCORE, + zRankWithScore: ZRANK_WITHSCORE, ZREM, zRem: ZREM, ZREMRANGEBYLEX, @@ -624,6 +628,8 @@ export default { zRemRangeByScore: ZREMRANGEBYSCORE, ZREVRANK, zRevRank: ZREVRANK, + ZREVRANK_WITHSCORE, + zRevRankWithScore: ZREVRANK_WITHSCORE, ZSCAN, zScan: ZSCAN, ZSCORE, diff --git a/packages/client/lib/commands/ZRANK_WITHSCORE.spec.ts b/packages/client/lib/commands/ZRANK_WITHSCORE.spec.ts new file mode 100644 index 00000000000..2a6e264289c --- /dev/null +++ b/packages/client/lib/commands/ZRANK_WITHSCORE.spec.ts @@ -0,0 +1,49 @@ +import { strict as assert } from 'assert'; +import testUtils, { GLOBAL } from '../test-utils'; +import { transformArguments, transformReply } from './ZRANK_WITHSCORE'; + +describe('ZRANK WITHSCORE', () => { + testUtils.isVersionGreaterThanHook([7, 2]); + + it('transformArguments', () => { + assert.deepEqual( + transformArguments('key', 'member'), + ['ZRANK', 'key', 'member', 'WITHSCORE'] + ); + }); + + it('transformReply', () => { + assert.deepEqual( + transformReply([]), + null + ); + assert.deepEqual( + transformReply(['test', '1']), + { + value: 'test', + score: 1 + } + ); + }); + + testUtils.testWithClient('client.zRankWithScore empty response', async client => { + assert.deepEqual( + await client.zRankWithScore('key', 'member'), + null + ); + }, GLOBAL.SERVERS.OPEN); + + testUtils.testWithClient('client.zRankWithScore', async client => { + await Promise.all([ + client.zAdd('zRankWithScoreSet', 1, 'one'), + client.zAdd('zRankWithScoreSet', 2, 'two') + ]); + assert.deepEqual( + await client.zRankWithScore('zRankWithScoreSet', 'one'), + { + value: 'one', + score: 0 + } + ); + }, GLOBAL.SERVERS.OPEN); +}); diff --git a/packages/client/lib/commands/ZRANK_WITHSCORE.ts b/packages/client/lib/commands/ZRANK_WITHSCORE.ts new file mode 100644 index 00000000000..178a55fcd39 --- /dev/null +++ b/packages/client/lib/commands/ZRANK_WITHSCORE.ts @@ -0,0 +1,13 @@ +import { RedisCommandArguments } from '.'; +import { transformArguments as transformZRankArguments } from './ZRANK'; + +export { FIRST_KEY_INDEX, IS_READ_ONLY } from './ZRANK'; + +export function transformArguments(...args: Parameters): RedisCommandArguments { + return [ + ...transformZRankArguments(...args), + 'WITHSCORE' + ]; +} + +export { transformSortedSetMemberNullReply as transformReply } from './generic-transformers'; diff --git a/packages/client/lib/commands/ZREVRANK_WITHSCORE.spec.ts b/packages/client/lib/commands/ZREVRANK_WITHSCORE.spec.ts new file mode 100644 index 00000000000..67013485a66 --- /dev/null +++ b/packages/client/lib/commands/ZREVRANK_WITHSCORE.spec.ts @@ -0,0 +1,49 @@ +import { strict as assert } from 'assert'; +import testUtils, { GLOBAL } from '../test-utils'; +import { transformArguments, transformReply } from './ZREVRANK_WITHSCORE'; + +describe('ZREVRANK WITHSCORE', () => { + testUtils.isVersionGreaterThanHook([7, 2]); + + it('transformArguments', () => { + assert.deepEqual( + transformArguments('key', 'member'), + ['ZREVRANK', 'key', 'member', 'WITHSCORE'] + ); + }); + + it('transformReply', () => { + assert.deepEqual( + transformReply([]), + null + ); + assert.deepEqual( + transformReply(['test', '1']), + { + value: 'test', + score: 1 + } + ); + }); + + testUtils.testWithClient('client.zRevRankWithScore empty response', async client => { + assert.deepEqual( + await client.zRevRankWithScore('key', 'member'), + null + ); + }, GLOBAL.SERVERS.OPEN); + + testUtils.testWithClient('client.zRevRankWithScore', async client => { + await Promise.all([ + client.zAdd('zRevRankWithScoreSet', 1, 'one'), + client.zAdd('zRevRankWithScoreSet', 2, 'two') + ]); + assert.deepEqual( + await client.zRevRankWithScore('zRevRankWithScoreSet', 'one'), + { + value: 'one', + score: 1 + } + ); + }, GLOBAL.SERVERS.OPEN); +}); diff --git a/packages/client/lib/commands/ZREVRANK_WITHSCORE.ts b/packages/client/lib/commands/ZREVRANK_WITHSCORE.ts new file mode 100644 index 00000000000..5f8736460a3 --- /dev/null +++ b/packages/client/lib/commands/ZREVRANK_WITHSCORE.ts @@ -0,0 +1,13 @@ +import { RedisCommandArguments } from '.'; +import { transformArguments as transformZRevRankArguments } from './ZREVRANK'; + +export { FIRST_KEY_INDEX, IS_READ_ONLY } from './ZREVRANK'; + +export function transformArguments(...args: Parameters): RedisCommandArguments { + return [ + ...transformZRevRankArguments(...args), + 'WITHSCORE' + ]; +} + +export { transformSortedSetMemberNullReply as transformReply } from './generic-transformers';