use std::{fmt, sync::Arc};
use praxis_core::config::{Condition, FailureMode, ResponseCondition};
use super::branch::ResolvedBranch;
use crate::any_filter::AnyFilter;
pub(crate) struct PipelineFilter {
pub(crate) name: Option<Arc<str>>,
pub(crate) branches: Vec<ResolvedBranch>,
pub(crate) conditions: Vec<Condition>,
pub(crate) failure_mode: FailureMode,
pub(crate) filter: AnyFilter,
pub(crate) filter_id: usize,
pub(crate) response_conditions: Vec<ResponseCondition>,
}
impl fmt::Debug for PipelineFilter {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.debug_struct("PipelineFilter")
.field("filter", &self.filter.name())
.field("name", &self.name)
.field("branches", &self.branches.len())
.field("conditions", &self.conditions.len())
.finish()
}
}
impl PipelineFilter {
pub(crate) fn new(
filter_id: usize,
filter: AnyFilter,
conditions: Vec<Condition>,
response_conditions: Vec<ResponseCondition>,
) -> Self {
Self {
name: None,
branches: Vec::new(),
conditions,
failure_mode: FailureMode::default(),
filter,
filter_id,
response_conditions,
}
}
}