import { Transform } from 'class-transformer'; import { IsEnum, IsObject, IsOptional, IsString, IsUUID, Matches, MaxLength, MinLength, } from 'class-validator'; import { AssetInformationStatus } from '../../database/entities'; export class CreateAssetDto { @Transform(({ value }) => typeof value === 'string' ? value.trim().toUpperCase() : value, ) @IsString() @MinLength(1) @MaxLength(120) @Matches(/^[A-Z0-9][A-Z0-9._/-]*$/) code!: string; @Transform(({ value }) => (typeof value === 'string' ? value.trim() : value)) @IsString() @MinLength(1) @MaxLength(200) name!: string; @IsOptional() @Transform(({ value }) => typeof value === 'string' && value.trim() ? value.trim() : null, ) @IsString() @MaxLength(200) commonName?: string | null; @IsUUID('4') typeId!: string; @IsOptional() @IsUUID('4') parentId?: string | null; @IsOptional() @IsUUID('4') operationalAreaId?: string | null; @IsOptional() @IsUUID('4') operatorCompanyId?: string | null; @IsOptional() @Transform(({ value }) => typeof value === 'string' && value.trim() ? value.trim() : null, ) @IsString() @MaxLength(4000) description?: string | null; @IsOptional() @IsEnum(AssetInformationStatus) informationStatus = AssetInformationStatus.DRAFT; @IsObject() attributes!: Record; }