import { IsString, IsOptional, IsArray, ValidateNested, IsNumber, IsIn } from 'class-validator'; import { Type } from 'class-transformer'; export class UploadedFileDto { @IsString() name: string; @IsString() content: string; } export class AnalyzeContentDto { @IsArray() @ValidateNested({ each: true }) @Type(() => UploadedFileDto) transcripts: UploadedFileDto[]; @IsArray() @ValidateNested({ each: true }) @Type(() => UploadedFileDto) comments: UploadedFileDto[]; @IsString() @IsOptional() tone?: string; @IsString() @IsOptional() duration?: string; @IsString() @IsOptional() speakerName?: string; @IsString() @IsOptional() topicFocus?: string; @IsString() @IsOptional() targetAudience?: string; } export class StrategyResultDto { @IsString() title: string; @IsString() @IsOptional() psychologicalTheme?: string; @IsString() @IsOptional() inspiredByGap?: string; @IsString() @IsOptional() hook?: string; @IsString() @IsOptional() thumbnailConcept?: string; @IsArray() @IsOptional() segments?: any[]; @IsArray() @IsOptional() interviewQuestions?: string[]; @IsArray() @IsOptional() selectedComments?: any[]; @IsOptional() commercialAnalysis?: any; @IsArray() @IsOptional() chartData?: any[]; } export class CommercialAnalysisDto { @IsString() title: string; @IsArray() @IsString({ each: true }) industries: string[]; } export class CreateProjectDto { @IsString() name: string; @IsString() @IsOptional() tone?: string; @IsString() @IsOptional() targetDuration?: string; @IsString() @IsOptional() speakerName?: string; @IsString() @IsOptional() targetAudience?: string; @IsString() @IsOptional() formatDescription?: string; } export class UpdateProjectDto { @IsString() @IsOptional() name?: string; @IsString() @IsOptional() tone?: string; @IsString() @IsOptional() targetDuration?: string; @IsString() @IsOptional() speakerName?: string; @IsString() @IsOptional() targetAudience?: string; @IsString() @IsOptional() formatDescription?: string; } export class AddVideoDto { @IsString() youtubeUrl: string; } export class AddDocumentDto { @IsString() title: string; @IsString() content: string; @IsString() @IsIn(['transcript', 'comments']) type: 'transcript' | 'comments'; } export class CreateEpisodeDto { @IsString() topic: string; @IsString() @IsOptional() targetAudience?: string; @IsString() @IsOptional() duration?: string; @IsString() @IsOptional() format?: string; }