61 lines
1.0 KiB
TypeScript
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[];
|
|
}
|