import {
  IsString,
  IsNotEmpty,
  IsOptional,
  IsEnum,
  IsBoolean,
  IsInt,
  Min,
  Max,
  MaxLength,
  MinLength,
} from 'class-validator';
import { Type } from 'class-transformer';
import { ConversationCategory } from './conversation.dto';

// ==================== 创建 Prompt 模板 DTO ====================

export class CreatePromptTemplateDto {
  @IsString()
  @IsNotEmpty()
  @MinLength(2, { message: '模板名称至少 2 个字符' })
  @MaxLength(100, { message: '模板名称最多 100 个字符' })
  name: string;

  @IsEnum(ConversationCategory)
  @IsNotEmpty()
  category: ConversationCategory;

  @IsString()
  @IsNotEmpty()
  @MinLength(10, { message: 'Prompt 内容至少 10 个字符' })
  @MaxLength(10000, { message: 'Prompt 内容最多 10000 个字符' })
  content: string;
}

// ==================== 更新 Prompt 模板 DTO ====================

export class UpdatePromptTemplateDto {
  @IsString()
  @IsOptional()
  @MinLength(2, { message: '模板名称至少 2 个字符' })
  @MaxLength(100, { message: '模板名称最多 100 个字符' })
  name?: string;

  @IsString()
  @IsOptional()
  @MinLength(10, { message: 'Prompt 内容至少 10 个字符' })
  @MaxLength(10000, { message: 'Prompt 内容最多 10000 个字符' })
  content?: string;
}

// ==================== 查询 Prompt 模板 DTO ====================

export class QueryPromptTemplateDto {
  @IsEnum(ConversationCategory)
  @IsOptional()
  category?: ConversationCategory;

  @IsBoolean()
  @IsOptional()
  @Type(() => Boolean)
  isActive?: boolean;
}
