import { IsNotEmpty, IsString, IsNumber, IsOptional, IsDateString, IsArray, Min, IsBoolean, IsObject, } from 'class-validator'; /** * DTO for querying workflow execution logs */ export class GetExecutionLogsDto { @IsNumber() @IsOptional() schedule_id?: number; @IsNumber() @IsOptional() workflow_id?: number; @IsString() @IsOptional() execution_status?: string; @IsArray() @IsString({ each: true }) @IsOptional() execution_statuses?: string[]; @IsString() @IsOptional() triggered_by?: string; @IsNumber() @IsOptional() triggered_by_user_id?: number; @IsDateString() @IsOptional() start_date?: string; @IsDateString() @IsOptional() end_date?: string; @IsNumber() @IsOptional() @Min(1) page?: number; @IsNumber() @IsOptional() @Min(1) size?: number; @IsString() @IsOptional() sortBy?: string; @IsString() @IsOptional() sortOrder?: 'ASC' | 'DESC'; @IsNumber() @IsOptional() organization_id?: number; @IsNumber() @IsOptional() enterprise_id?: number; } /** * DTO for manual trigger execution */ export class ManualTriggerDto { @IsNumber() @IsNotEmpty() schedule_id: number; @IsNumber() @IsNotEmpty() user_id: number; @IsObject() @IsOptional() metadata?: Record; } /** * DTO for pause/resume schedule */ export class ToggleScheduleDto { @IsNumber() @IsNotEmpty() schedule_id: number; @IsBoolean() @IsNotEmpty() is_paused: boolean; } /** * Response DTO for execution log statistics */ export class ExecutionLogStatsDto { total_executions: number; successful_executions: number; failed_executions: number; pending_executions: number; running_executions: number; average_duration_ms: number; total_records_processed: number; success_rate_percentage: number; }