diff --git a/CHANGELOG.md b/CHANGELOG.md index a61ea0df2..57d4e72e9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,10 +10,12 @@ 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 - Extended the allocations by ETF holding on the allocations page by the parent ETFs (experimental) +- Upgraded `countries-and-timezones` from version `3.4.1` to `3.7.2` - Upgraded `Nx` from version `20.0.6` to `20.1.2` ## 2.123.0 - 2024-11-16 diff --git a/apps/api/src/app/admin/admin.service.ts b/apps/api/src/app/admin/admin.service.ts index a0531c483..4abd47565 100644 --- a/apps/api/src/app/admin/admin.service.ts +++ b/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 { - 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'); diff --git a/apps/client/src/app/services/admin.service.ts b/apps/client/src/app/services/admin.service.ts index 367c1b432..20cfa8ef8 100644 --- a/apps/client/src/app/services/admin.service.ts +++ b/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('/api/v1/admin/user', { params }); } diff --git a/libs/common/src/lib/interfaces/admin-users.interface.ts b/libs/common/src/lib/interfaces/admin-users.interface.ts index 24eb45c85..8fde15e18 100644 --- a/libs/common/src/lib/interfaces/admin-users.interface.ts +++ b/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; diff --git a/package-lock.json b/package-lock.json index e51ca278c..7e1d1cd90 100644 --- a/package-lock.json +++ b/package-lock.json @@ -60,7 +60,7 @@ "class-transformer": "0.5.1", "class-validator": "0.14.1", "color": "4.2.3", - "countries-and-timezones": "3.4.1", + "countries-and-timezones": "3.7.2", "countries-list": "3.1.1", "countup.js": "2.8.0", "date-fns": "3.6.0", @@ -15270,9 +15270,9 @@ } }, "node_modules/countries-and-timezones": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/countries-and-timezones/-/countries-and-timezones-3.4.1.tgz", - "integrity": "sha512-INeHGCony4XUUR8iGL/lmt9s1Oi+n+gFHeJAMfbV5hJfYeDOB8JG1oxz5xFQu5oBZoRCJe/87k1Vzue9DoIauA==", + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/countries-and-timezones/-/countries-and-timezones-3.7.2.tgz", + "integrity": "sha512-BHAMt4pKb3U3r/mRfiIlVnDhRd8m6VC20gwCWtpZGZkSsjZmnMDKFnnjWYGWhBmypQAqcQILFJwmEhIgWGVTmw==", "license": "MIT", "engines": { "node": ">=8.x", diff --git a/package.json b/package.json index 1be0035b4..c2a6995ad 100644 --- a/package.json +++ b/package.json @@ -106,7 +106,7 @@ "class-transformer": "0.5.1", "class-validator": "0.14.1", "color": "4.2.3", - "countries-and-timezones": "3.4.1", + "countries-and-timezones": "3.7.2", "countries-list": "3.1.1", "countup.js": "2.8.0", "date-fns": "3.6.0",