generated from fahricansecer/boilerplate-be
177 lines
2.6 KiB
TypeScript
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;
|
|
}
|