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> {
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<AdminUsersResponse['users']> {
let orderBy: Prisma.Enumerable<Prisma.UserOrderByWithRelationInput> = [
{ 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({

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 {
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[];
}

Loading…
Cancel
Save