use crate::database::universal_types::{UniversalTimestamp, UniversalUuid};
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TaskExecution {
pub id: UniversalUuid,
pub workflow_execution_id: UniversalUuid,
pub task_name: String,
pub status: String,
pub started_at: Option<UniversalTimestamp>,
pub completed_at: Option<UniversalTimestamp>,
pub attempt: i32,
pub max_attempts: i32,
pub error_details: Option<String>,
pub trigger_rules: String,
pub task_configuration: String,
pub retry_at: Option<UniversalTimestamp>,
pub last_error: Option<String>,
pub recovery_attempts: i32,
pub last_recovery_at: Option<UniversalTimestamp>,
pub sub_status: Option<String>,
pub claimed_by: Option<UniversalUuid>,
pub heartbeat_at: Option<UniversalTimestamp>,
pub created_at: UniversalTimestamp,
pub updated_at: UniversalTimestamp,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct NewTaskExecution {
pub workflow_execution_id: UniversalUuid,
pub task_name: String,
pub status: String,
pub attempt: i32,
pub max_attempts: i32,
pub trigger_rules: String,
pub task_configuration: String,
}