Browse Source

feat: added pagination to /admin/user endpoint

pull/4050/head
Qurban Ahmad 9 months ago
committed by Thomas Kaul
parent
commit
688b705fc2
  1. 10
      apps/api/src/app/admin/admin.controller.ts
  2. 23
      apps/api/src/app/admin/admin.service.ts

10
apps/api/src/app/admin/admin.controller.ts

@ -352,7 +352,13 @@ export class AdminController {
@Get('user')
@HasPermission(permissions.accessAdminControl)
@UseGuards(AuthGuard('jwt'), HasPermissionGuard)
public async getUsers(): Promise<AdminUsers> {
return this.adminService.getUsers();
public async getUsers(
@Query('skip') skip?: number,
@Query('take') take?: number
): Promise<AdminUsers> {
return this.adminService.getUsers({
skip: isNaN(skip) ? undefined : skip,
take: isNaN(take) ? undefined : take
});
}
}

23
apps/api/src/app/admin/admin.service.ts

@ -429,8 +429,14 @@ export class AdminService {
};
}
public async getUsers(): Promise<AdminUsers> {
return { users: await this.getUsersWithAnalytics() };
public async getUsers({
skip,
take = Number.MAX_SAFE_INTEGER
}: {
skip?: number;
take?: number;
}): Promise<AdminUsers> {
return { users: await this.getUsersWithAnalytics({ take, skip }) };
}
public async patchAssetProfileData({
@ -640,7 +646,13 @@ export class AdminService {
return { marketData, count: marketData.length };
}
private async getUsersWithAnalytics(): Promise<AdminUsers['users']> {
private async getUsersWithAnalytics({
take,
skip
}: {
take?: number;
skip?: number;
}): Promise<AdminUsers['users']> {
let orderBy: Prisma.UserOrderByWithRelationInput = {
createdAt: 'desc'
};
@ -662,6 +674,8 @@ export class AdminService {
const usersWithAnalytics = await this.prismaService.user.findMany({
orderBy,
where,
skip,
take,
select: {
_count: {
select: { Account: true, Order: true }
@ -677,8 +691,7 @@ export class AdminService {
id: true,
role: true,
Subscription: true
},
take: 30
}
});
return usersWithAnalytics.map(

Loading…
Cancel
Save