Browse Source

Feature/add count to admin user endpoint response (#4058)

* Add count to admin user endpoint response

* Update changelog
pull/4063/head
QURBAN AHMAD 2 months ago
committed by GitHub
parent
commit
6d440eb777
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 1
      CHANGELOG.md
  2. 25
      apps/api/src/app/admin/admin.service.ts
  3. 2
      apps/client/src/app/services/admin.service.ts
  4. 1
      libs/common/src/lib/interfaces/admin-users.interface.ts

1
CHANGELOG.md

@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Added
- Added pagination parameters (`skip`, `take`) to the endpoint `GET api/v1/admin/user`
- Added pagination response (`count`) to the endpoint `GET api/v1/admin/user`
### Changed

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

@ -140,7 +140,7 @@ export class AdminService {
const [settings, transactionCount, userCount] = await Promise.all([
this.propertyService.get(),
this.prismaService.order.count(),
this.prismaService.user.count()
this.countUsersWithAnalytics()
]);
return {
@ -436,7 +436,12 @@ export class AdminService {
skip?: number;
take?: number;
}): Promise<AdminUsers> {
return { users: await this.getUsersWithAnalytics({ skip, take }) };
const [count, users] = await Promise.all([
this.countUsersWithAnalytics(),
this.getUsersWithAnalytics({ skip, take })
]);
return { count, users };
}
public async patchAssetProfileData({
@ -514,6 +519,22 @@ export class AdminService {
return response;
}
private async countUsersWithAnalytics() {
let where: Prisma.UserWhereInput;
if (this.configurationService.get('ENABLE_FEATURE_SUBSCRIPTION')) {
where = {
NOT: {
Analytics: null
}
};
}
return this.prismaService.user.count({
where
});
}
private getExtendedPrismaClient() {
Logger.debug('Connect extended prisma client', 'AdminService');

2
apps/client/src/app/services/admin.service.ts

@ -159,7 +159,7 @@ export class AdminService {
public fetchUsers() {
let params = new HttpParams();
params = params.append('take', 100);
params = params.append('take', 30);
return this.http.get<AdminUsers>('/api/v1/admin/user', { params });
}

1
libs/common/src/lib/interfaces/admin-users.interface.ts

@ -1,6 +1,7 @@
import { Role } from '@prisma/client';
export interface AdminUsers {
count: number;
users: {
accountCount: number;
country: string;

Loading…
Cancel
Save