resolve manual DTOs

This commit is contained in:
2025-12-18 22:19:40 +01:00
parent 4a3087ae35
commit d617654928
179 changed files with 3716 additions and 1257 deletions

View File

@@ -0,0 +1,19 @@
import { ApiProperty } from '@nestjs/swagger';
import { IsString, IsNotEmpty, IsOptional } from 'class-validator';
export class CreateTeamInputDTO {
@ApiProperty()
@IsString()
@IsNotEmpty()
name: string;
@ApiProperty()
@IsString()
@IsNotEmpty()
tag: string;
@ApiProperty({ required: false })
@IsOptional()
@IsString()
description?: string;
}

View File

@@ -0,0 +1,9 @@
import { ApiProperty } from '@nestjs/swagger';
export class CreateTeamOutputDTO {
@ApiProperty()
id: string;
@ApiProperty()
success: boolean;
}

View File

@@ -0,0 +1,38 @@
import { ApiProperty } from '@nestjs/swagger';
class TeamListItemDTO {
@ApiProperty()
id: string;
@ApiProperty()
name: string;
@ApiProperty()
tag: string;
@ApiProperty()
description: string;
@ApiProperty()
memberCount: number;
@ApiProperty({ type: [String] })
leagues: string[];
@ApiProperty({ required: false })
specialization?: 'endurance' | 'sprint' | 'mixed';
@ApiProperty({ required: false })
region?: string;
@ApiProperty({ type: [String], required: false })
languages?: string[];
}
export class GetAllTeamsOutputDTO {
@ApiProperty({ type: [TeamListItemDTO] })
teams: TeamListItemDTO[];
@ApiProperty()
totalCount: number;
}

View File

@@ -0,0 +1,58 @@
import { ApiProperty } from '@nestjs/swagger';
class TeamDTO {
@ApiProperty()
id: string;
@ApiProperty()
name: string;
@ApiProperty()
tag: string;
@ApiProperty()
description: string;
@ApiProperty()
ownerId: string;
@ApiProperty({ type: [String] })
leagues: string[];
@ApiProperty({ required: false })
createdAt?: string;
@ApiProperty({ required: false })
specialization?: 'endurance' | 'sprint' | 'mixed';
@ApiProperty({ required: false })
region?: string;
@ApiProperty({ type: [String], required: false })
languages?: string[];
}
class MembershipDTO {
@ApiProperty()
role: 'owner' | 'manager' | 'member';
@ApiProperty()
joinedAt: string;
@ApiProperty()
isActive: boolean;
}
export class GetDriverTeamOutputDTO {
@ApiProperty({ type: TeamDTO })
team: TeamDTO;
@ApiProperty({ type: MembershipDTO })
membership: MembershipDTO;
@ApiProperty()
isOwner: boolean;
@ApiProperty()
canManage: boolean;
}

View File

@@ -0,0 +1,55 @@
import { ApiProperty } from '@nestjs/swagger';
class TeamDTO {
@ApiProperty()
id: string;
@ApiProperty()
name: string;
@ApiProperty()
tag: string;
@ApiProperty()
description: string;
@ApiProperty()
ownerId: string;
@ApiProperty({ type: [String] })
leagues: string[];
@ApiProperty({ required: false })
createdAt?: string;
@ApiProperty({ required: false })
specialization?: 'endurance' | 'sprint' | 'mixed';
@ApiProperty({ required: false })
region?: string;
@ApiProperty({ type: [String], required: false })
languages?: string[];
}
class MembershipDTO {
@ApiProperty()
role: 'owner' | 'manager' | 'member';
@ApiProperty()
joinedAt: string;
@ApiProperty()
isActive: boolean;
}
export class GetTeamDetailsOutputDTO {
@ApiProperty({ type: TeamDTO })
team: TeamDTO;
@ApiProperty({ type: MembershipDTO, nullable: true })
membership: MembershipDTO | null;
@ApiProperty()
canManage: boolean;
}

View File

@@ -0,0 +1,35 @@
import { ApiProperty } from '@nestjs/swagger';
class TeamJoinRequestDTO {
@ApiProperty()
requestId: string;
@ApiProperty()
driverId: string;
@ApiProperty()
driverName: string;
@ApiProperty()
teamId: string;
@ApiProperty()
status: 'pending' | 'approved' | 'rejected';
@ApiProperty()
requestedAt: string;
@ApiProperty()
avatarUrl: string;
}
export class GetTeamJoinRequestsOutputDTO {
@ApiProperty({ type: [TeamJoinRequestDTO] })
requests: TeamJoinRequestDTO[];
@ApiProperty()
pendingCount: number;
@ApiProperty()
totalCount: number;
}

View File

@@ -0,0 +1,38 @@
import { ApiProperty } from '@nestjs/swagger';
class TeamMemberDTO {
@ApiProperty()
driverId: string;
@ApiProperty()
driverName: string;
@ApiProperty()
role: 'owner' | 'manager' | 'member';
@ApiProperty()
joinedAt: string;
@ApiProperty()
isActive: boolean;
@ApiProperty()
avatarUrl: string;
}
export class GetTeamMembersOutputDTO {
@ApiProperty({ type: [TeamMemberDTO] })
members: TeamMemberDTO[];
@ApiProperty()
totalCount: number;
@ApiProperty()
ownerCount: number;
@ApiProperty()
managerCount: number;
@ApiProperty()
memberCount: number;
}

View File

@@ -0,0 +1,12 @@
import { ApiProperty } from '@nestjs/swagger';
export class GetTeamMembershipOutputDTO {
@ApiProperty()
role: 'owner' | 'manager' | 'member';
@ApiProperty()
joinedAt: string;
@ApiProperty()
isActive: boolean;
}

View File

@@ -0,0 +1,19 @@
import { ApiProperty } from '@nestjs/swagger';
import { IsString, IsOptional } from 'class-validator';
export class UpdateTeamInputDTO {
@ApiProperty({ required: false })
@IsOptional()
@IsString()
name?: string;
@ApiProperty({ required: false })
@IsOptional()
@IsString()
tag?: string;
@ApiProperty({ required: false })
@IsOptional()
@IsString()
description?: string;
}

View File

@@ -0,0 +1,6 @@
import { ApiProperty } from '@nestjs/swagger';
export class UpdateTeamOutputDTO {
@ApiProperty()
success: boolean;
}