Implement offset and limit based paging in search API
Signed-off-by: Oliver Sand <oliver.sand@sda-se.com>
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user