Some checks failed
ci/woodpecker/push/ci Pipeline failed
Co-authored-by: Jason Woltje <jason@diversecanvas.com> Co-committed-by: Jason Woltje <jason@diversecanvas.com>
124 lines
2.2 KiB
TypeScript
124 lines
2.2 KiB
TypeScript
import { IsArray, IsIn, IsObject, IsOptional, IsString, IsUUID, MaxLength } from 'class-validator';
|
|
|
|
const missionStatuses = ['planning', 'active', 'paused', 'completed', 'failed'] as const;
|
|
const taskStatuses = ['not-started', 'in-progress', 'blocked', 'done', 'cancelled'] as const;
|
|
|
|
export class CreateMissionDto {
|
|
@IsString()
|
|
@MaxLength(255)
|
|
name!: string;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
@MaxLength(10_000)
|
|
description?: string;
|
|
|
|
@IsOptional()
|
|
@IsUUID()
|
|
projectId?: string;
|
|
|
|
@IsOptional()
|
|
@IsIn(missionStatuses)
|
|
status?: 'planning' | 'active' | 'paused' | 'completed' | 'failed';
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
@MaxLength(255)
|
|
phase?: string;
|
|
|
|
@IsOptional()
|
|
@IsArray()
|
|
milestones?: Record<string, unknown>[];
|
|
|
|
@IsOptional()
|
|
@IsObject()
|
|
config?: Record<string, unknown>;
|
|
}
|
|
|
|
export class UpdateMissionDto {
|
|
@IsOptional()
|
|
@IsString()
|
|
@MaxLength(255)
|
|
name?: string;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
@MaxLength(10_000)
|
|
description?: string | null;
|
|
|
|
@IsOptional()
|
|
@IsUUID()
|
|
projectId?: string | null;
|
|
|
|
@IsOptional()
|
|
@IsIn(missionStatuses)
|
|
status?: 'planning' | 'active' | 'paused' | 'completed' | 'failed';
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
@MaxLength(255)
|
|
phase?: string;
|
|
|
|
@IsOptional()
|
|
@IsArray()
|
|
milestones?: Record<string, unknown>[];
|
|
|
|
@IsOptional()
|
|
@IsObject()
|
|
config?: Record<string, unknown>;
|
|
|
|
@IsOptional()
|
|
@IsObject()
|
|
metadata?: Record<string, unknown> | null;
|
|
}
|
|
|
|
export class CreateMissionTaskDto {
|
|
@IsOptional()
|
|
@IsUUID()
|
|
taskId?: string;
|
|
|
|
@IsOptional()
|
|
@IsIn(taskStatuses)
|
|
status?: 'not-started' | 'in-progress' | 'blocked' | 'done' | 'cancelled';
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
@MaxLength(10_000)
|
|
description?: string;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
@MaxLength(10_000)
|
|
notes?: string;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
@MaxLength(255)
|
|
pr?: string;
|
|
}
|
|
|
|
export class UpdateMissionTaskDto {
|
|
@IsOptional()
|
|
@IsUUID()
|
|
taskId?: string;
|
|
|
|
@IsOptional()
|
|
@IsIn(taskStatuses)
|
|
status?: 'not-started' | 'in-progress' | 'blocked' | 'done' | 'cancelled';
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
@MaxLength(10_000)
|
|
description?: string;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
@MaxLength(10_000)
|
|
notes?: string;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
@MaxLength(255)
|
|
pr?: string;
|
|
}
|