class-validator 를 사용한다.

대회 생성, 수정에 동일한 dto를 적용했습니다.

@ApiProperty({ description: '대회에 참여 가능한 최대 인원' })
@IsInt()
@Min(1)
@Max(200)
maxParticipants: number;

1명 이상, 200명 이하이고 정수인지 검증한다.

@ApiProperty({ description: '대회 종료 일시 (ISO string)', type: Date })
@IsDateString()
endsAt: string;

date string 인지 검증한다.

@ApiProperty({ description: '대회에 사용되는 문제 id 리스트', type: Number, isArray: true })
@IsArray()
@ArrayMinSize(1)
@ArrayMaxSize(30)
@ArrayUnique()
@IsInt({ each: true })
problemIds: number[];

배열인지 확인하고, 배열의 길이가 1 이상 30 이하인지 확인한다. 배열의 각 값이 유니크한지 확인한다. 원소가 모두 정수인지 확인한다.

대회 생성

대회 생성시 서비스단에 구현해야 할 검증 로직