diff --git a/src/modules/minglaradmin/handlers/hosthub/onboarding/getAllOnboardingHosts.ts b/src/modules/minglaradmin/handlers/hosthub/onboarding/getAllOnboardingHosts.ts index b65c399..814e9db 100644 --- a/src/modules/minglaradmin/handlers/hosthub/onboarding/getAllOnboardingHosts.ts +++ b/src/modules/minglaradmin/handlers/hosthub/onboarding/getAllOnboardingHosts.ts @@ -8,6 +8,7 @@ import { PrismaService } from '../../../../../common/database/prisma.service'; import { safeHandler } from '../../../../../common/utils/handlers/safeHandler'; import ApiError from '../../../../../common/utils/helper/ApiError'; import { MinglarService } from '../../../services/minglar.service'; +import { paginationService } from '../../../../../common/utils/pagination/pagination.service'; const prismaService = new PrismaService(); const minglarService = new MinglarService(prismaService); @@ -51,9 +52,23 @@ export const handler = safeHandler( (queryParams.q as string) || undefined; + // Pagination + const paginationParams = paginationService.getPaginationFromEvent(event); + const paginationOptions = + paginationService.parsePaginationParams(paginationParams); + // Get all host applications from service based on user role - const hostApplications = - await minglarService.getAllOnboardingHostApplications(search); + const { data, totalCount } = + await minglarService.getAllOnboardingHostApplications( + paginationOptions, + search, + ); + + const paginatedResponse = paginationService.createPaginatedResponse( + data, + totalCount, + paginationOptions, + ); return { statusCode: 200, @@ -64,7 +79,7 @@ export const handler = safeHandler( body: JSON.stringify({ success: true, message: 'Host applications retrieved successfully', - data: hostApplications, + ...paginatedResponse, }), }; }, diff --git a/src/modules/minglaradmin/services/minglar.service.ts b/src/modules/minglaradmin/services/minglar.service.ts index 9f633b2..9955875 100644 --- a/src/modules/minglaradmin/services/minglar.service.ts +++ b/src/modules/minglaradmin/services/minglar.service.ts @@ -824,7 +824,10 @@ export class MinglarService { } - async getAllOnboardingHostApplications(search?: string) { + async getAllOnboardingHostApplications( + paginationOptions?: PaginationOptions, + search?: string, + ) { const where: any = { isActive: true, hostStatusInternal: { notIn: [HOST_STATUS_INTERNAL.DRAFT] }, @@ -870,6 +873,8 @@ export class MinglarService { ]; } + const totalCount = await this.prisma.hostHeader.count({ where }); + const onBoardingHostApp = await this.prisma.hostHeader.findMany({ where, select: { @@ -905,6 +910,11 @@ export class MinglarService { }, }, }, + orderBy: { + createdAt: 'desc', + }, + skip: paginationOptions?.skip ?? 0, + take: paginationOptions?.limit ?? undefined, }); const bucket = config.aws.bucketName; @@ -924,7 +934,10 @@ export class MinglarService { } } - return onBoardingHostApp; + return { + data: onBoardingHostApp, + totalCount, + }; } async getAllOnboardingHostApplications_New(