From 70ed49ed8a91c70bf56323bc7d4235e0e43833fe Mon Sep 17 00:00:00 2001 From: Nanak Date: Fri, 28 Apr 2023 21:52:41 +0530 Subject: [PATCH 1/8] #2486: add timeout as optional param in FT.Search --- packages/search/lib/commands/AGGREGATE.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/search/lib/commands/AGGREGATE.ts b/packages/search/lib/commands/AGGREGATE.ts index c32d20b0b1c..a6cbf007947 100644 --- a/packages/search/lib/commands/AGGREGATE.ts +++ b/packages/search/lib/commands/AGGREGATE.ts @@ -124,6 +124,7 @@ export interface AggregateOptions { STEPS?: Array; PARAMS?: Params; DIALECT?: number; + TIMEOUT?: number; } export const FIRST_KEY_INDEX = 1; From 1473408bda69e6d5549888350a25996ef295a72f Mon Sep 17 00:00:00 2001 From: Nanak Date: Fri, 28 Apr 2023 23:09:09 +0530 Subject: [PATCH 2/8] return timeout from aggregate --- packages/search/lib/commands/AGGREGATE.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/search/lib/commands/AGGREGATE.ts b/packages/search/lib/commands/AGGREGATE.ts index a6cbf007947..944bfefd037 100644 --- a/packages/search/lib/commands/AGGREGATE.ts +++ b/packages/search/lib/commands/AGGREGATE.ts @@ -214,6 +214,10 @@ export function pushAggregatehOptions( args.push('DIALECT', options.DIALECT.toString()); } + if (options?.TIMEOUT) { + args.push('TIMEOUT', options.TIMEOUT.toString()); + } + return args; } From ce86db4264206344fbd751a049aa868e531c960e Mon Sep 17 00:00:00 2001 From: Nanak Date: Fri, 28 Apr 2023 23:10:00 +0530 Subject: [PATCH 3/8] add test case for TIMEOUT in aggregate --- packages/search/lib/commands/AGGREGATE.spec.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/packages/search/lib/commands/AGGREGATE.spec.ts b/packages/search/lib/commands/AGGREGATE.spec.ts index a2330076438..2834ec62d02 100644 --- a/packages/search/lib/commands/AGGREGATE.spec.ts +++ b/packages/search/lib/commands/AGGREGATE.spec.ts @@ -454,6 +454,13 @@ describe('AGGREGATE', () => { ['FT.AGGREGATE', 'index', '*', 'DIALECT', '1'] ); }); + + it('with TIMEOUT', () => { + assert.deepEqual( + transformArguments('index', '*', { TIMEOUT: 10 }), + ['FT.AGGREGATE', 'index', '*', '10'] + ); + }); }); testUtils.testWithClient('client.ft.aggregate', async client => { From 581ffc33038834307dc3417881dd84c65da0c574 Mon Sep 17 00:00:00 2001 From: Nanak Date: Fri, 28 Apr 2023 23:26:33 +0530 Subject: [PATCH 4/8] add TIMEOUT option in search file --- packages/search/lib/commands/SEARCH.ts | 1 + packages/search/lib/commands/index.ts | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/packages/search/lib/commands/SEARCH.ts b/packages/search/lib/commands/SEARCH.ts index fbccb25058b..ef6c0d5c2d1 100644 --- a/packages/search/lib/commands/SEARCH.ts +++ b/packages/search/lib/commands/SEARCH.ts @@ -55,6 +55,7 @@ export interface SearchOptions { }; PARAMS?: Params; DIALECT?: number; + TIMEOUT?: number; } export function transformArguments( diff --git a/packages/search/lib/commands/index.ts b/packages/search/lib/commands/index.ts index d56db7bdbbe..df878d00b75 100644 --- a/packages/search/lib/commands/index.ts +++ b/packages/search/lib/commands/index.ts @@ -510,6 +510,10 @@ export function pushSearchOptions( args.preserve = true; } + if (options?.TIMEOUT) { + args.push('TIMEOUT', options.TIMEOUT.toString()); + } + return args; } From d9dd807bb7d47c366efe9affafb5b1e5688476f1 Mon Sep 17 00:00:00 2001 From: Nanak Date: Fri, 28 Apr 2023 23:26:50 +0530 Subject: [PATCH 5/8] add test cases for TIMEOUT option in search file --- packages/search/lib/commands/SEARCH.spec.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/packages/search/lib/commands/SEARCH.spec.ts b/packages/search/lib/commands/SEARCH.spec.ts index 47c82cf892b..931458b3a25 100644 --- a/packages/search/lib/commands/SEARCH.spec.ts +++ b/packages/search/lib/commands/SEARCH.spec.ts @@ -233,6 +233,15 @@ describe('SEARCH', () => { ['FT.SEARCH', 'index', 'query', 'DIALECT', '1'] ); }); + + it('with TIMEOUT', () => { + assert.deepEqual( + transformArguments('index', 'query', { + TIMEOUT: 5 + }), + ['FT.SEARCH', 'index', 'query', 'TIMEOUT', '5'] + ); + }); }); describe('client.ft.search', () => { From dbbaf722513839f685adfe728454a5983fdef35b Mon Sep 17 00:00:00 2001 From: Nanak Date: Sun, 30 Apr 2023 04:22:40 +0530 Subject: [PATCH 6/8] uodate search/aggregates to add timeout when it is not undefuned --- packages/search/lib/commands/AGGREGATE.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/search/lib/commands/AGGREGATE.ts b/packages/search/lib/commands/AGGREGATE.ts index 944bfefd037..950d959243a 100644 --- a/packages/search/lib/commands/AGGREGATE.ts +++ b/packages/search/lib/commands/AGGREGATE.ts @@ -214,7 +214,7 @@ export function pushAggregatehOptions( args.push('DIALECT', options.DIALECT.toString()); } - if (options?.TIMEOUT) { + if (options?.TIMEOUT !== undefined) { args.push('TIMEOUT', options.TIMEOUT.toString()); } From bbb139900a0871d0f601043559089db7cc3d4756 Mon Sep 17 00:00:00 2001 From: Nanak Date: Sun, 30 Apr 2023 04:24:11 +0530 Subject: [PATCH 7/8] update search to add timeout when it is not undefuned --- packages/search/lib/commands/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/search/lib/commands/index.ts b/packages/search/lib/commands/index.ts index df878d00b75..0470aff213f 100644 --- a/packages/search/lib/commands/index.ts +++ b/packages/search/lib/commands/index.ts @@ -510,7 +510,7 @@ export function pushSearchOptions( args.preserve = true; } - if (options?.TIMEOUT) { + if (options?.TIMEOUT !== undefined) { args.push('TIMEOUT', options.TIMEOUT.toString()); } From 2a2002e637081062c44b62194644307fbb39d8e7 Mon Sep 17 00:00:00 2001 From: Nanak <36790357+Nanak360@users.noreply.github.com> Date: Sun, 30 Apr 2023 10:19:41 +0530 Subject: [PATCH 8/8] update test case for AGGREGATE --- packages/search/lib/commands/AGGREGATE.spec.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/search/lib/commands/AGGREGATE.spec.ts b/packages/search/lib/commands/AGGREGATE.spec.ts index 2834ec62d02..d1e4565339a 100644 --- a/packages/search/lib/commands/AGGREGATE.spec.ts +++ b/packages/search/lib/commands/AGGREGATE.spec.ts @@ -458,7 +458,7 @@ describe('AGGREGATE', () => { it('with TIMEOUT', () => { assert.deepEqual( transformArguments('index', '*', { TIMEOUT: 10 }), - ['FT.AGGREGATE', 'index', '*', '10'] + ['FT.AGGREGATE', 'index', '*', 'TIMEOUT', '10'] ); }); });