Files
ContentGen_BE/src/modules/youtube-tools/dto/tube-strategist.dto.ts
T
Harun CAN 58832e99d1
Backend Deploy 🚀 / build-and-deploy (push) Has been cancelled
main
2026-05-09 05:57:56 +02:00

177 lines
2.6 KiB
TypeScript

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;
}