From eb81a5fdfbadc53e7f779840b7be82cfdcc41c0f Mon Sep 17 00:00:00 2001 From: Oliver Sand Date: Mon, 16 Aug 2021 09:30:32 +0200 Subject: [PATCH] Implement `offset` and `limit` based paging in search API Signed-off-by: Oliver Sand --- packages/search-common/src/types.ts | 4 +++- plugins/search-backend/src/service/router.ts | 12 +++++++++--- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/packages/search-common/src/types.ts b/packages/search-common/src/types.ts index 2a4447efac..0bd12fbd42 100644 --- a/packages/search-common/src/types.ts +++ b/packages/search-common/src/types.ts @@ -19,7 +19,8 @@ export interface SearchQuery { term: string; filters?: JsonObject; types?: string[]; - pageCursor: string; + offset?: number; + limit?: number; } export interface SearchResult { @@ -29,6 +30,7 @@ export interface SearchResult { export interface SearchResultSet { results: SearchResult[]; + totalCount: number; } /** diff --git a/plugins/search-backend/src/service/router.ts b/plugins/search-backend/src/service/router.ts index 3a0a43522e..5a87fb1734 100644 --- a/plugins/search-backend/src/service/router.ts +++ b/plugins/search-backend/src/service/router.ts @@ -36,15 +36,21 @@ export async function createRouter({ req: express.Request, res: express.Response, ) => { - const { term, filters = {}, pageCursor = '' } = req.query; + const { term, filters = {}, types, offset, limit } = req.query; logger.info( `Search request received: term="${term}", filters=${JSON.stringify( filters, - )}, ${pageCursor}`, + )}, offset=${offset ?? ''}, limit=${limit ?? ''}`, ); try { - const results = await engine?.query(req.query); + const results = await engine?.query({ + term, + types, + filters, + offset: offset ? Number(offset) : undefined, + limit: limit ? Number(limit) : undefined, + }); res.send(results); } catch (err) { throw new Error(