From 12eab52fe40861ecf942613972b7f499f155bfff Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Wed, 5 Nov 2025 20:47:51 +0100 Subject: [PATCH] Refactoring --- apps/api/src/app/admin/admin.service.ts | 55 +++---------------- .../admin-users-response.interface.ts | 29 +++------- 2 files changed, 16 insertions(+), 68 deletions(-) diff --git a/apps/api/src/app/admin/admin.service.ts b/apps/api/src/app/admin/admin.service.ts index 2715d65d5..7f5a874af 100644 --- a/apps/api/src/app/admin/admin.service.ts +++ b/apps/api/src/app/admin/admin.service.ts @@ -510,24 +510,7 @@ export class AdminService { } public async getUser(id: string): Promise { - const user = await this.prismaService.user.findUnique({ - select: { - _count: { - select: { - accounts: true, - activities: true, - watchlist: true - } - }, - analytics: true, - createdAt: true, - id: true, - provider: true, - role: true, - subscriptions: true, - tags: true, - updatedAt: true - }, + const [user] = await this.getUsersWithAnalytics({ where: { id } }); @@ -535,25 +518,7 @@ export class AdminService { throw new NotFoundException(`User with ID ${id} not found`); } - const { _count, analytics, createdAt, provider, role, updatedAt } = user; - - return { - accountCount: _count.accounts || 0, - activityCount: _count.activities || 0, - analytics: { - country: analytics?.country, - dailyApiRequests: analytics?.dataProviderGhostfolioDailyRequests || 0, - lastActivity: analytics?.updatedAt - }, - createdAt, - id, - provider, - role, - subscriptions: user.subscriptions, - tags: user.tags, - updatedAt, - watchlistCount: _count.watchlist || 0 - }; + return user; } public async getUsers({ @@ -863,17 +828,21 @@ export class AdminService { private async getUsersWithAnalytics({ skip, - take + take, + where = { + NOT: { + analytics: null + } + } }: { skip?: number; take?: number; + where?: Prisma.UserWhereInput; }): Promise { let orderBy: Prisma.Enumerable = [ { createdAt: 'desc' } ]; - let where: Prisma.UserWhereInput; - if (this.configurationService.get('ENABLE_FEATURE_SUBSCRIPTION')) { orderBy = [ { @@ -882,12 +851,6 @@ export class AdminService { } } ]; - - where = { - NOT: { - analytics: null - } - }; } const usersWithAnalytics = await this.prismaService.user.findMany({ diff --git a/libs/common/src/lib/interfaces/responses/admin-users-response.interface.ts b/libs/common/src/lib/interfaces/responses/admin-users-response.interface.ts index 03dabf283..0fd88e6f4 100644 --- a/libs/common/src/lib/interfaces/responses/admin-users-response.interface.ts +++ b/libs/common/src/lib/interfaces/responses/admin-users-response.interface.ts @@ -1,35 +1,20 @@ -import { Provider, Role, Subscription, Tag } from '@prisma/client'; +import { Role } from '@prisma/client'; interface AdminUser { accountCount: number; activityCount: number; - analytics?: { - country?: string | null; - dailyApiRequests: number; - lastActivity?: Date | null; - }; + country: string; createdAt: Date; + dailyApiRequests: number; + engagement: number; id: string; - provider: Provider; + lastActivity: Date; role: Role; - updatedAt: Date; - watchlistCount: number; } -export interface AdminUserResponse extends AdminUser { - subscriptions: Subscription[]; - tags: Tag[]; -} +export interface AdminUserResponse extends AdminUser {} export interface AdminUsersResponse { count: number; - users: (Pick< - AdminUser, - 'accountCount' | 'activityCount' | 'createdAt' | 'id' | 'role' - > & { - country: string; - dailyApiRequests: number; - engagement: number; - lastActivity: Date; - })[]; + users: AdminUser[]; }