import { ApiPropertyOptional } from "@nestjs/swagger"; import { Type } from "class-transformer"; import { IsArray, IsOptional, Validate, ValidateNested, } from "class-validator"; import { HasObjectionEntriesConstraint } from "src/common/validators/has-objection-entries.validator"; import { NewPartDto, UserObjectionPartDto } from "./user-objection.dto"; /** * V2 user objection body — same shape as v1 {@link UserObjectionDto} * with nested validation enabled for the v2 controller pipeline. */ export class UserObjectionV2Dto { @ApiPropertyOptional({ type: [UserObjectionPartDto] }) @Validate(HasObjectionEntriesConstraint) @IsOptional() @IsArray() @ValidateNested({ each: true }) @Type(() => UserObjectionPartDto) objectionParts?: UserObjectionPartDto[]; @ApiPropertyOptional({ type: [NewPartDto] }) @Validate(HasObjectionEntriesConstraint) @IsOptional() @IsArray() @ValidateNested({ each: true }) @Type(() => NewPartDto) newParts?: NewPartDto[]; }