view data fixes
This commit is contained in:
@@ -1,80 +0,0 @@
|
||||
import { ApiProperty } from '@nestjs/swagger';
|
||||
|
||||
class UserGrowthDto {
|
||||
@ApiProperty({ description: 'Label for the time period' })
|
||||
label!: string;
|
||||
|
||||
@ApiProperty({ description: 'Number of new users' })
|
||||
value!: number;
|
||||
|
||||
@ApiProperty({ description: 'Color class for the bar' })
|
||||
color!: string;
|
||||
}
|
||||
|
||||
class RoleDistributionDto {
|
||||
@ApiProperty({ description: 'Role name' })
|
||||
label!: string;
|
||||
|
||||
@ApiProperty({ description: 'Number of users with this role' })
|
||||
value!: number;
|
||||
|
||||
@ApiProperty({ description: 'Color class for the bar' })
|
||||
color!: string;
|
||||
}
|
||||
|
||||
class StatusDistributionDto {
|
||||
@ApiProperty({ description: 'Number of active users' })
|
||||
active!: number;
|
||||
|
||||
@ApiProperty({ description: 'Number of suspended users' })
|
||||
suspended!: number;
|
||||
|
||||
@ApiProperty({ description: 'Number of deleted users' })
|
||||
deleted!: number;
|
||||
}
|
||||
|
||||
class ActivityTimelineDto {
|
||||
@ApiProperty({ description: 'Date label' })
|
||||
date!: string;
|
||||
|
||||
@ApiProperty({ description: 'Number of new users' })
|
||||
newUsers!: number;
|
||||
|
||||
@ApiProperty({ description: 'Number of logins' })
|
||||
logins!: number;
|
||||
}
|
||||
|
||||
export class DashboardStatsResponseDto {
|
||||
@ApiProperty({ description: 'Total number of users' })
|
||||
totalUsers!: number;
|
||||
|
||||
@ApiProperty({ description: 'Number of active users' })
|
||||
activeUsers!: number;
|
||||
|
||||
@ApiProperty({ description: 'Number of suspended users' })
|
||||
suspendedUsers!: number;
|
||||
|
||||
@ApiProperty({ description: 'Number of deleted users' })
|
||||
deletedUsers!: number;
|
||||
|
||||
@ApiProperty({ description: 'Number of system admins' })
|
||||
systemAdmins!: number;
|
||||
|
||||
@ApiProperty({ description: 'Number of recent logins (last 24h)' })
|
||||
recentLogins!: number;
|
||||
|
||||
@ApiProperty({ description: 'Number of new users today' })
|
||||
newUsersToday!: number;
|
||||
|
||||
@ApiProperty({ type: [UserGrowthDto], description: 'User growth over last 7 days' })
|
||||
userGrowth!: UserGrowthDto[];
|
||||
|
||||
@ApiProperty({ type: [RoleDistributionDto], description: 'Distribution of user roles' })
|
||||
roleDistribution!: RoleDistributionDto[];
|
||||
|
||||
@ApiProperty({ type: StatusDistributionDto, description: 'Distribution of user statuses' })
|
||||
statusDistribution!: StatusDistributionDto;
|
||||
|
||||
@ApiProperty({ type: [ActivityTimelineDto], description: 'Activity timeline for last 7 days' })
|
||||
activityTimeline!: ActivityTimelineDto[];
|
||||
}
|
||||
24
apps/api/src/domain/health/HealthDTO.ts
Normal file
24
apps/api/src/domain/health/HealthDTO.ts
Normal file
@@ -0,0 +1,24 @@
|
||||
export interface HealthDTO {
|
||||
status: 'ok' | 'degraded' | 'error' | 'unknown';
|
||||
timestamp: string;
|
||||
uptime?: number;
|
||||
responseTime?: number;
|
||||
errorRate?: number;
|
||||
lastCheck?: string;
|
||||
checksPassed?: number;
|
||||
checksFailed?: number;
|
||||
components?: Array<{
|
||||
name: string;
|
||||
status: 'ok' | 'degraded' | 'error' | 'unknown';
|
||||
lastCheck?: string;
|
||||
responseTime?: number;
|
||||
errorRate?: number;
|
||||
}>;
|
||||
alerts?: Array<{
|
||||
id: string;
|
||||
type: 'critical' | 'warning' | 'info';
|
||||
title: string;
|
||||
message: string;
|
||||
timestamp: string;
|
||||
}>;
|
||||
}
|
||||
@@ -1,9 +1,13 @@
|
||||
import { ApiProperty } from '@nestjs/swagger';
|
||||
import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';
|
||||
import { Type } from 'class-transformer';
|
||||
import { IsArray, IsBoolean, IsString, ValidateNested } from 'class-validator';
|
||||
import { RaceDTO } from '../../race/dtos/RaceDTO';
|
||||
|
||||
export class LeagueScheduleDTO {
|
||||
@ApiPropertyOptional()
|
||||
@IsString()
|
||||
leagueId?: string;
|
||||
|
||||
@ApiProperty()
|
||||
@IsString()
|
||||
seasonId!: string;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { ApiProperty } from '@nestjs/swagger';
|
||||
import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';
|
||||
|
||||
export class RaceDTO {
|
||||
@ApiProperty()
|
||||
@@ -10,6 +10,33 @@ export class RaceDTO {
|
||||
@ApiProperty()
|
||||
date!: string;
|
||||
|
||||
@ApiProperty({ nullable: true })
|
||||
@ApiPropertyOptional({ nullable: true })
|
||||
leagueName?: string;
|
||||
|
||||
@ApiPropertyOptional()
|
||||
track?: string;
|
||||
|
||||
@ApiPropertyOptional()
|
||||
car?: string;
|
||||
|
||||
@ApiPropertyOptional()
|
||||
sessionType?: string;
|
||||
|
||||
@ApiPropertyOptional()
|
||||
leagueId?: string;
|
||||
|
||||
@ApiPropertyOptional()
|
||||
strengthOfField?: number;
|
||||
|
||||
@ApiPropertyOptional()
|
||||
isUpcoming?: boolean;
|
||||
|
||||
@ApiPropertyOptional()
|
||||
isLive?: boolean;
|
||||
|
||||
@ApiPropertyOptional()
|
||||
isPast?: boolean;
|
||||
|
||||
@ApiPropertyOptional()
|
||||
status?: string;
|
||||
}
|
||||
Reference in New Issue
Block a user