Browse Source

Refactoring

pull/5910/head
Thomas Kaul 2 months ago
parent
commit
12eab52fe4
  1. 55
      apps/api/src/app/admin/admin.service.ts
  2. 29
      libs/common/src/lib/interfaces/responses/admin-users-response.interface.ts

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

@ -510,24 +510,7 @@ export class AdminService {
} }
public async getUser(id: string): Promise<AdminUserResponse> { public async getUser(id: string): Promise<AdminUserResponse> {
const user = await this.prismaService.user.findUnique({ const [user] = await this.getUsersWithAnalytics({
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
},
where: { id } where: { id }
}); });
@ -535,25 +518,7 @@ export class AdminService {
throw new NotFoundException(`User with ID ${id} not found`); throw new NotFoundException(`User with ID ${id} not found`);
} }
const { _count, analytics, createdAt, provider, role, updatedAt } = user; return 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
};
} }
public async getUsers({ public async getUsers({
@ -863,17 +828,21 @@ export class AdminService {
private async getUsersWithAnalytics({ private async getUsersWithAnalytics({
skip, skip,
take take,
where = {
NOT: {
analytics: null
}
}
}: { }: {
skip?: number; skip?: number;
take?: number; take?: number;
where?: Prisma.UserWhereInput;
}): Promise<AdminUsersResponse['users']> { }): Promise<AdminUsersResponse['users']> {
let orderBy: Prisma.Enumerable<Prisma.UserOrderByWithRelationInput> = [ let orderBy: Prisma.Enumerable<Prisma.UserOrderByWithRelationInput> = [
{ createdAt: 'desc' } { createdAt: 'desc' }
]; ];
let where: Prisma.UserWhereInput;
if (this.configurationService.get('ENABLE_FEATURE_SUBSCRIPTION')) { if (this.configurationService.get('ENABLE_FEATURE_SUBSCRIPTION')) {
orderBy = [ orderBy = [
{ {
@ -882,12 +851,6 @@ export class AdminService {
} }
} }
]; ];
where = {
NOT: {
analytics: null
}
};
} }
const usersWithAnalytics = await this.prismaService.user.findMany({ const usersWithAnalytics = await this.prismaService.user.findMany({

29
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 { interface AdminUser {
accountCount: number; accountCount: number;
activityCount: number; activityCount: number;
analytics?: { country: string;
country?: string | null;
dailyApiRequests: number;
lastActivity?: Date | null;
};
createdAt: Date; createdAt: Date;
dailyApiRequests: number;
engagement: number;
id: string; id: string;
provider: Provider; lastActivity: Date;
role: Role; role: Role;
updatedAt: Date;
watchlistCount: number;
} }
export interface AdminUserResponse extends AdminUser { export interface AdminUserResponse extends AdminUser {}
subscriptions: Subscription[];
tags: Tag[];
}
export interface AdminUsersResponse { export interface AdminUsersResponse {
count: number; count: number;
users: (Pick< users: AdminUser[];
AdminUser,
'accountCount' | 'activityCount' | 'createdAt' | 'id' | 'role'
> & {
country: string;
dailyApiRequests: number;
engagement: number;
lastActivity: Date;
})[];
} }

Loading…
Cancel
Save