fix: authorized search engine to obey query page limit

Signed-off-by: Heikki Hellgren <heikki.hellgren@op.fi>
This commit is contained in:
Heikki Hellgren
2024-02-20 12:27:06 +02:00
parent 06773d802a
commit 3ed0eac5b4
2 changed files with 12 additions and 7 deletions
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-search-backend': patch
---
Authorized search engine now obeys query page limit
@@ -18,12 +18,12 @@ import { compact, zipObject } from 'lodash';
import qs from 'qs';
import DataLoader from 'dataloader';
import {
EvaluatePermissionResponse,
EvaluatePermissionRequest,
AuthorizePermissionRequest,
AuthorizeResult,
EvaluatePermissionRequest,
EvaluatePermissionResponse,
isResourcePermission,
PermissionEvaluator,
AuthorizePermissionRequest,
QueryPermissionRequest,
} from '@backstage/plugin-permission-common';
import {
@@ -63,7 +63,6 @@ export function encodePageCursor({ page }: { page: number }): string {
}
export class AuthorizedSearchEngine implements SearchEngine {
private readonly pageSize = 25;
private readonly queryLatencyBudgetMs: number;
constructor(
@@ -162,8 +161,9 @@ export class AuthorizedSearchEngine implements SearchEngine {
);
}
const pageSize = query.pageLimit || 25;
const { page } = decodePageCursor(query.pageCursor);
const targetResults = (page + 1) * this.pageSize;
const targetResults = (page + 1) * pageSize;
let filteredResults: IndexableResult[] = [];
let nextPageCursor: string | undefined;
@@ -190,12 +190,12 @@ export class AuthorizedSearchEngine implements SearchEngine {
return {
results: filteredResults
.slice(page * this.pageSize, (page + 1) * this.pageSize)
.slice(page * pageSize, (page + 1) * pageSize)
.map((result, index) => {
// Overwrite any/all rank entries to avoid leaking knowledge of filtered results.
return {
...result,
rank: page * this.pageSize + index + 1,
rank: page * pageSize + index + 1,
};
}),
previousPageCursor: