Implement offset and limit based paging in search API

Signed-off-by: Oliver Sand <oliver.sand@sda-se.com>
This commit is contained in:
Oliver Sand
2021-08-16 09:30:32 +02:00
parent 225bf89b77
commit eb81a5fdfb
2 changed files with 12 additions and 4 deletions
+3 -1
View File
@@ -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;
}
/**
+9 -3
View File
@@ -36,15 +36,21 @@ export async function createRouter({
req: express.Request<any, unknown, unknown, SearchQuery>,
res: express.Response<SearchResultSet>,
) => {
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(