generated from fahricansecer/boilerplate-be
176 lines
4.0 KiB
TypeScript
176 lines
4.0 KiB
TypeScript
import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';
|
||
import { IsString, IsOptional, IsBoolean, IsArray } from 'class-validator';
|
||
|
||
// SourceType and CharacterRole are string unions - using string here for decorator compatibility
|
||
|
||
/**
|
||
* CreateSourceDto
|
||
*
|
||
* DTO for adding a research source.
|
||
*
|
||
* TR: Araştırma kaynağı eklemek için DTO.
|
||
* EN: DTO for adding a research source.
|
||
*/
|
||
export class CreateSourceDto {
|
||
@ApiProperty({ description: 'Project ID' })
|
||
@IsString()
|
||
projectId: string;
|
||
|
||
@ApiProperty({ description: 'Source title' })
|
||
@IsString()
|
||
title: string;
|
||
|
||
@ApiProperty({ description: 'Source URL' })
|
||
@IsString()
|
||
url: string;
|
||
|
||
@ApiPropertyOptional({ description: 'Source snippet/summary' })
|
||
@IsOptional()
|
||
@IsString()
|
||
snippet?: string;
|
||
|
||
@ApiProperty({ description: 'Source type' })
|
||
@IsString()
|
||
type: string; // article, video, interview, etc.
|
||
|
||
@ApiPropertyOptional({ description: 'Whether source is selected' })
|
||
@IsOptional()
|
||
@IsBoolean()
|
||
selected?: boolean;
|
||
}
|
||
|
||
/**
|
||
* CreateBriefItemDto
|
||
*
|
||
* DTO for adding a brief question/answer.
|
||
*
|
||
* TR: Brief sorusu/cevabı eklemek için DTO.
|
||
* EN: DTO for adding a brief question/answer.
|
||
*/
|
||
export class CreateBriefItemDto {
|
||
@ApiProperty({ description: 'Project ID' })
|
||
@IsString()
|
||
projectId: string;
|
||
|
||
@ApiProperty({ description: 'Question text' })
|
||
@IsString()
|
||
question: string;
|
||
|
||
@ApiProperty({ description: 'Answer text' })
|
||
@IsString()
|
||
answer: string;
|
||
|
||
@ApiPropertyOptional({ description: 'Sort order' })
|
||
@IsOptional()
|
||
sortOrder?: number;
|
||
}
|
||
|
||
/**
|
||
* CreateCharacterDto
|
||
*
|
||
* DTO for creating a character profile.
|
||
*
|
||
* TR: Karakter profili oluşturmak için DTO.
|
||
* EN: DTO for creating a character profile.
|
||
*/
|
||
export class CreateCharacterDto {
|
||
@ApiProperty({ description: 'Project ID' })
|
||
@IsString()
|
||
projectId: string;
|
||
|
||
@ApiProperty({ description: 'Character name' })
|
||
@IsString()
|
||
name: string;
|
||
|
||
@ApiProperty({ description: 'Character role' })
|
||
@IsString()
|
||
role: string; // Protagonist, Antagonist, etc.
|
||
|
||
@ApiPropertyOptional({ description: 'Character values (inner beliefs)' })
|
||
@IsOptional()
|
||
@IsString()
|
||
values?: string;
|
||
|
||
@ApiPropertyOptional({ description: 'Character traits (personality)' })
|
||
@IsOptional()
|
||
@IsString()
|
||
traits?: string;
|
||
|
||
@ApiPropertyOptional({
|
||
description: 'Character mannerisms (external behavior)',
|
||
})
|
||
@IsOptional()
|
||
@IsString()
|
||
mannerisms?: string;
|
||
}
|
||
|
||
/**
|
||
* PerformResearchDto
|
||
*
|
||
* DTO for performing deep research.
|
||
*
|
||
* TR: Derin araştırma yapmak için DTO.
|
||
* EN: DTO for performing deep research.
|
||
*/
|
||
export class PerformResearchDto {
|
||
@ApiProperty({ description: 'Project ID' })
|
||
@IsString()
|
||
projectId: string;
|
||
|
||
@ApiPropertyOptional({ description: 'Additional research query' })
|
||
@IsOptional()
|
||
@IsString()
|
||
additionalQuery?: string;
|
||
}
|
||
|
||
/**
|
||
* GenerateDiscoveryQuestionsDto
|
||
*
|
||
* DTO for generating creative brief discovery questions.
|
||
*
|
||
* TR: Yaratıcı brief keşif soruları oluşturmak için DTO.
|
||
* EN: DTO for generating creative brief discovery questions.
|
||
*/
|
||
export class GenerateDiscoveryQuestionsDto {
|
||
@ApiProperty({ description: 'Topic to generate questions for' })
|
||
@IsString()
|
||
topic: string;
|
||
|
||
@ApiProperty({ description: 'Language for questions' })
|
||
@IsString()
|
||
language: string;
|
||
|
||
@ApiPropertyOptional({ description: 'Existing questions to avoid' })
|
||
@IsOptional()
|
||
@IsArray()
|
||
existingQuestions?: string[];
|
||
}
|
||
|
||
/**
|
||
* GenerateLoglineDto
|
||
*
|
||
* DTO for generating logline and high concept.
|
||
*
|
||
* TR: Logline ve high concept oluşturmak için DTO.
|
||
* EN: DTO for generating logline and high concept.
|
||
*/
|
||
export class GenerateLoglineDto {
|
||
@ApiProperty({ description: 'Project ID' })
|
||
@IsString()
|
||
projectId: string;
|
||
}
|
||
|
||
/**
|
||
* GenerateCharactersDto
|
||
*
|
||
* DTO for auto-generating character profiles.
|
||
*
|
||
* TR: Otomatik karakter profilleri oluşturmak için DTO.
|
||
* EN: DTO for auto-generating character profiles.
|
||
*/
|
||
export class GenerateCharactersDto {
|
||
@ApiProperty({ description: 'Project ID' })
|
||
@IsString()
|
||
projectId: string;
|
||
}
|