import { IsBoolean, IsIn, IsOptional, IsString, MaxLength } from 'class-validator'; export type JobMode = 'mp3' | 'mp4' | 'playlist' | 'facebook'; export class ProbeDto { @IsString() @MaxLength(2048) url!: string; } export class CreateJobDto { @IsString() @MaxLength(2048) url!: string; @IsIn(['mp3', 'mp4', 'playlist', 'facebook']) mode!: JobMode; // Token formatu zależny od trybu: // mp3 -> '320' | '256' | '192' | '128' (kbps) // mp4/fb -> '2160' | '1440' | '1080' | '720' | '480' | 'best' // playlist -> 'video-1080' | 'video-720' | 'audio-320' @IsOptional() @IsString() @MaxLength(32) format?: string; @IsOptional() @IsBoolean() subtitles?: boolean; }