use crate::step::{StepResult, StepStatus};
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
pub struct FlowResult {
pub flow_name: String,
pub steps: Vec<StepResult>,
pub total_duration_ms: u64,
pub success: bool,
pub rolled_back: bool,
}
impl FlowResult {
#[must_use]
pub fn completed_count(&self) -> usize {
self.steps
.iter()
.filter(|s| s.status == StepStatus::Completed)
.count()
}
#[must_use]
pub fn failed_count(&self) -> usize {
self.steps
.iter()
.filter(|s| s.status == StepStatus::Failed)
.count()
}
#[must_use]
pub fn skipped_count(&self) -> usize {
self.steps
.iter()
.filter(|s| s.status == StepStatus::Skipped)
.count()
}
}