diff --git a/packages/client/lib/commands/ZRANGEBYLEX.spec.ts b/packages/client/lib/commands/ZRANGEBYLEX.spec.ts index 40b779eac2..7b0c22946c 100644 --- a/packages/client/lib/commands/ZRANGEBYLEX.spec.ts +++ b/packages/client/lib/commands/ZRANGEBYLEX.spec.ts @@ -1,33 +1,36 @@ -// import { strict as assert } from 'assert'; -// import testUtils, { GLOBAL } from '../test-utils'; -// import { transformArguments } from './ZRANGEBYLEX'; +import { strict as assert } from 'assert'; +import testUtils, { GLOBAL } from '../test-utils'; +import ZRANGEBYLEX from './ZRANGEBYLEX'; -// describe('ZRANGEBYLEX', () => { -// describe('transformArguments', () => { -// it('simple', () => { -// assert.deepEqual( -// transformArguments('src', '-', '+'), -// ['ZRANGEBYLEX', 'src', '-', '+'] -// ); -// }); +describe('ZRANGEBYLEX', () => { + describe('transformArguments', () => { + it('simple', () => { + assert.deepEqual( + ZRANGEBYLEX.transformArguments('src', '-', '+'), + ['ZRANGEBYLEX', 'src', '-', '+'] + ); + }); -// it('with LIMIT', () => { -// assert.deepEqual( -// transformArguments('src', '-', '+', { -// LIMIT: { -// offset: 0, -// count: 1 -// } -// }), -// ['ZRANGEBYLEX', 'src', '-', '+', 'LIMIT', '0', '1'] -// ); -// }); -// }); + it('with LIMIT', () => { + assert.deepEqual( + ZRANGEBYLEX.transformArguments('src', '-', '+', { + LIMIT: { + offset: 0, + count: 1 + } + }), + ['ZRANGEBYLEX', 'src', '-', '+', 'LIMIT', '0', '1'] + ); + }); + }); -// testUtils.testWithClient('client.zRangeByLex', async client => { -// assert.deepEqual( -// await client.zRangeByLex('src', '-', '+'), -// [] -// ); -// }, GLOBAL.SERVERS.OPEN); -// }); + testUtils.testAll('zRangeByLex', async client => { + assert.deepEqual( + await client.zRangeByLex('src', '-', '+'), + [] + ); + }, { + client: GLOBAL.SERVERS.OPEN, + cluster: GLOBAL.CLUSTERS.OPEN + }); +}); diff --git a/packages/client/lib/commands/ZRANGEBYLEX.ts b/packages/client/lib/commands/ZRANGEBYLEX.ts index d06debb008..afe7718f3c 100644 --- a/packages/client/lib/commands/ZRANGEBYLEX.ts +++ b/packages/client/lib/commands/ZRANGEBYLEX.ts @@ -1,35 +1,34 @@ -// import { RedisCommandArgument, RedisCommandArguments } from '.'; -// import { transformStringDoubleArgument } from './generic-transformers'; +import { RedisArgument, ArrayReply, BlobStringReply, Command } from '../RESP/types'; +import { transformStringDoubleArgument } from './generic-transformers'; -// export const FIRST_KEY_INDEX = 1; +export interface ZRangeByLexOptions { + LIMIT?: { + offset: number; + count: number; + }; +} -// export const IS_READ_ONLY = true; +export default { + FIRST_KEY_INDEX: 1, + IS_READ_ONLY: true, + transformArguments( + key: RedisArgument, + min: RedisArgument, + max: RedisArgument, + options?: ZRangeByLexOptions + ) { + const args = [ + 'ZRANGEBYLEX', + key, + transformStringDoubleArgument(min), + transformStringDoubleArgument(max) + ]; -// export interface ZRangeByLexOptions { -// LIMIT?: { -// offset: number; -// count: number; -// }; -// } + if (options?.LIMIT) { + args.push('LIMIT', options.LIMIT.offset.toString(), options.LIMIT.count.toString()); + } -// export function transformArguments( -// key: RedisCommandArgument, -// min: RedisCommandArgument, -// max: RedisCommandArgument, -// options?: ZRangeByLexOptions -// ): RedisCommandArguments { -// const args = [ -// 'ZRANGEBYLEX', -// key, -// transformStringDoubleArgument(min), -// transformStringDoubleArgument(max) -// ]; - -// if (options?.LIMIT) { -// args.push('LIMIT', options.LIMIT.offset.toString(), options.LIMIT.count.toString()); -// } - -// return args; -// } - -// export declare function transformReply(): Array; + return args; + }, + transformReply: undefined as unknown as () => ArrayReply +} as const satisfies Command; diff --git a/packages/client/lib/commands/index.ts b/packages/client/lib/commands/index.ts index 818bc4ef17..a680d06748 100644 --- a/packages/client/lib/commands/index.ts +++ b/packages/client/lib/commands/index.ts @@ -165,6 +165,7 @@ import ZRANDMEMBER_COUNT_WITHSCORES from './ZRANDMEMBER_COUNT_WITHSCORES'; import ZRANDMEMBER_COUNT from './ZRANDMEMBER_COUNT'; import ZRANDMEMBER from './ZRANDMEMBER'; import ZRANGE from './ZRANGE'; +import ZRANGEBYLEX from './ZRANGEBYLEX'; import ZRANGEBYSCORE from './ZRANGEBYSCORE'; import ZRANK from './ZRANK'; import ZREM from './ZREM'; @@ -511,6 +512,8 @@ export default { zRandMember: ZRANDMEMBER, ZRANGE, zRange: ZRANGE, + ZRANGEBYLEX, + zRangeByLex: ZRANGEBYLEX, ZRANGEBYSCORE, zRangeByScore: ZRANGEBYSCORE, ZRANK, diff --git a/todo.md b/todo.md index cd08196a65..1c1425acd6 100644 --- a/todo.md +++ b/todo.md @@ -13,7 +13,6 @@ # waiting List -- `ZRANGEBYSCORE.ts` - `ZRANGEBYLEX.ts` - `ZREMRANGEBYLEX.ts` - `ZREMRANGEBYRANK.ts`