104 lines
1.8 KiB
TypeScript
104 lines
1.8 KiB
TypeScript
import {
|
|
ArrayMaxSize,
|
|
IsArray,
|
|
IsIn,
|
|
IsISO8601,
|
|
IsObject,
|
|
IsOptional,
|
|
IsString,
|
|
IsUUID,
|
|
MaxLength,
|
|
} from 'class-validator';
|
|
|
|
const taskStatuses = ['not-started', 'in-progress', 'blocked', 'done', 'cancelled'] as const;
|
|
const taskPriorities = ['critical', 'high', 'medium', 'low'] as const;
|
|
|
|
export class CreateTaskDto {
|
|
@IsString()
|
|
@MaxLength(255)
|
|
title!: string;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
@MaxLength(10_000)
|
|
description?: string;
|
|
|
|
@IsOptional()
|
|
@IsIn(taskStatuses)
|
|
status?: 'not-started' | 'in-progress' | 'blocked' | 'done' | 'cancelled';
|
|
|
|
@IsOptional()
|
|
@IsIn(taskPriorities)
|
|
priority?: 'critical' | 'high' | 'medium' | 'low';
|
|
|
|
@IsOptional()
|
|
@IsUUID()
|
|
projectId?: string;
|
|
|
|
@IsOptional()
|
|
@IsUUID()
|
|
missionId?: string;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
@MaxLength(255)
|
|
assignee?: string;
|
|
|
|
@IsOptional()
|
|
@IsArray()
|
|
@ArrayMaxSize(50)
|
|
@IsString({ each: true })
|
|
tags?: string[];
|
|
|
|
@IsOptional()
|
|
@IsISO8601()
|
|
dueDate?: string;
|
|
}
|
|
|
|
export class UpdateTaskDto {
|
|
@IsOptional()
|
|
@IsString()
|
|
@MaxLength(255)
|
|
title?: string;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
@MaxLength(10_000)
|
|
description?: string | null;
|
|
|
|
@IsOptional()
|
|
@IsIn(taskStatuses)
|
|
status?: 'not-started' | 'in-progress' | 'blocked' | 'done' | 'cancelled';
|
|
|
|
@IsOptional()
|
|
@IsIn(taskPriorities)
|
|
priority?: 'critical' | 'high' | 'medium' | 'low';
|
|
|
|
@IsOptional()
|
|
@IsUUID()
|
|
projectId?: string | null;
|
|
|
|
@IsOptional()
|
|
@IsUUID()
|
|
missionId?: string | null;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
@MaxLength(255)
|
|
assignee?: string | null;
|
|
|
|
@IsOptional()
|
|
@IsArray()
|
|
@ArrayMaxSize(50)
|
|
@IsString({ each: true })
|
|
tags?: string[] | null;
|
|
|
|
@IsOptional()
|
|
@IsISO8601()
|
|
dueDate?: string | null;
|
|
|
|
@IsOptional()
|
|
@IsObject()
|
|
metadata?: Record<string, unknown> | null;
|
|
}
|