import dayjs from 'dayjs'; import duration from 'dayjs/plugin/duration'; import { Transform } from 'class-transformer'; import { IsArray, IsNumber, IsOptional, IsString, IsUrl, MaxLength, } from 'class-validator'; dayjs.extend(duration); export class CreateVideoDto { @IsOptional() @IsString({ message: 'Id deve ser uma string' }) @MaxLength(244) id?: string; @IsOptional() @IsArray({ message: 'Tags deve ser um array' }) tags?: string[]; @IsUrl() @MaxLength(244) url!: string; @IsOptional() @IsArray({ message: 'Categories deve ser um array' }) categories?: string[]; @IsOptional() @IsString() @MaxLength(244) title?: string; @IsOptional() @IsUrl() @MaxLength(244) thumbnail?: string; @IsOptional() @IsString({ message: 'Videoid deve ser uma string' }) @MaxLength(244) videoid?: string; @IsOptional() @IsString({ message: 'Duration deve ser uma string' }) @Transform(({ value }: { value: number }) => { const duration = dayjs.duration(value, 'seconds'); return duration.format('HH:mm:ss'); }) duration?: string; @IsOptional() @IsString() @MaxLength(244) description?: string; @IsOptional() @IsNumber( { allowNaN: false, allowInfinity: false }, { message: 'Timestamp deve ser um nĂºmero' }, ) @Transform(({ value }: { value: number }) => { const duration = dayjs(value * 1000); return duration.format('DD/MM/YYYY HH:mm:ss'); }) timestamp?: string; }