diff --git a/packages/backend-core/src/db/lucene.ts b/packages/backend-core/src/db/lucene.ts index e984fcdfdb..4a44aaa073 100644 --- a/packages/backend-core/src/db/lucene.ts +++ b/packages/backend-core/src/db/lucene.ts @@ -13,7 +13,7 @@ interface PaginatedSearchResponse extends SearchResponse { hasNextPage: boolean } -export type SearchParams = { +export type SearchParams = { tableId?: string sort?: string sortOrder?: string @@ -23,7 +23,7 @@ export type SearchParams = { version?: string indexer?: () => Promise disableEscaping?: boolean - rows?: Row[] + rows?: T | Row[] } export function removeKeyNumbering(key: any): string { @@ -502,7 +502,7 @@ async function recursiveSearch( if (rows.length > params.limit - 200) { pageSize = params.limit - rows.length } - const page = await new QueryBuilder(dbName, index, query) + const page = await new QueryBuilder(dbName, index, query) .setVersion(params.version) .setTable(params.tableId) .setBookmark(bookmark) @@ -546,14 +546,14 @@ export async function paginatedSearch( dbName: string, index: string, query: SearchFilters, - params: SearchParams + params: SearchParams ) { let limit = params.limit if (limit == null || isNaN(limit) || limit < 0) { limit = 50 } limit = Math.min(limit, 200) - const search = new QueryBuilder(dbName, index, query) + const search = new QueryBuilder(dbName, index, query) if (params.version) { search.setVersion(params.version) } @@ -612,13 +612,13 @@ export async function fullSearch( dbName: string, index: string, query: SearchFilters, - params: SearchParams + params: SearchParams ) { let limit = params.limit if (limit == null || isNaN(limit) || limit < 0) { limit = 1000 } params.limit = Math.min(limit, 1000) - const rows = await recursiveSearch(dbName, index, query, params) + const rows = await recursiveSearch(dbName, index, query, params) return { rows } } diff --git a/packages/backend-core/src/db/utils.ts b/packages/backend-core/src/db/utils.ts index 233d044eaa..c22685b912 100644 --- a/packages/backend-core/src/db/utils.ts +++ b/packages/backend-core/src/db/utils.ts @@ -366,6 +366,16 @@ export async function getAllApps({ } } +export async function getAppsById(appIds: string[]) { + const settled = await Promise.allSettled( + appIds.map(appId => getAppMetadata(appId)) + ) + // have to list the apps which exist, some may have been deleted + return settled + .filter(promise => promise.status === "fulfilled") + .map(promise => (promise as PromiseFulfilledResult).value) +} + /** * Utility function for getAllApps but filters to production apps only. */ diff --git a/packages/types/src/api/web/global/auditLogs.ts b/packages/types/src/api/web/global/auditLogs.ts index 480dbbfe2b..5a0cf4f398 100644 --- a/packages/types/src/api/web/global/auditLogs.ts +++ b/packages/types/src/api/web/global/auditLogs.ts @@ -1,5 +1,6 @@ import { Event, AuditedEventFriendlyName } from "../../../sdk" import { PaginationResponse, PaginationRequest } from "../" +import { User, App } from "../../../" export interface AuditLogSearchParams { userId?: string[] @@ -16,15 +17,13 @@ export interface SearchAuditLogsRequest extends PaginationRequest, AuditLogSearchParams {} +export enum AuditLogResourceStatus { + DELETED = "deleted", +} + export interface AuditLogEnriched { - app: { - _id: string - name: string - } - user: { - _id: string - name: string - } + app?: App | { _id: string; status: AuditLogResourceStatus } + user: User | { _id: string; status: AuditLogResourceStatus } event: Event timestamp: string name: string