Files
TodoList/apps/api/src/ai/dto/ai-chat.dto.ts
T

61 lines
1.0 KiB
TypeScript

import { Type } from "class-transformer";
import {
IsArray,
IsEnum,
IsInt,
IsOptional,
IsString,
MinLength,
ValidateNested
} from "class-validator";
import { AiChannel } from "../../../generated/prisma/client";
import { TaskPriority, TaskStatus } from "../../../generated/prisma/client";
export class LocalTaskContextItemDto {
@IsString()
@MinLength(1)
id!: string;
@IsString()
@MinLength(1)
title!: string;
@IsEnum(TaskPriority)
priority!: TaskPriority;
@IsEnum(TaskStatus)
status!: TaskStatus;
@IsOptional()
@IsInt()
ddlAt?: number | null;
@IsOptional()
@IsString()
contentText?: string | null;
@IsInt()
updatedAt!: number;
}
export class AiChatDto {
@IsString()
@MinLength(1)
message!: string;
@IsOptional()
@IsString()
@MinLength(1)
sessionId?: string;
@IsOptional()
@IsEnum(AiChannel)
channel?: AiChannel;
@IsOptional()
@IsArray()
@ValidateNested({ each: true })
@Type(() => LocalTaskContextItemDto)
localTasks?: LocalTaskContextItemDto[];
}