use std::time::Duration;
use serde::{Deserialize, Serialize};
use super::types::DurationStr;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default, Serialize, Deserialize)]
#[serde(rename_all = "lowercase")]
pub enum SignatureCheckMode {
#[default]
Strict,
Relaxed,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[non_exhaustive]
pub struct WorkflowConfig {
#[serde(default = "default_poll_interval")]
pub poll_interval: DurationStr,
#[serde(default = "default_step_timeout")]
pub step_timeout: DurationStr,
#[serde(default)]
pub signature_check: SignatureCheckMode,
}
impl Default for WorkflowConfig {
fn default() -> Self {
Self {
poll_interval: default_poll_interval(),
step_timeout: default_step_timeout(),
signature_check: SignatureCheckMode::Strict,
}
}
}
fn default_poll_interval() -> DurationStr {
DurationStr::new(Duration::from_secs(1))
}
fn default_step_timeout() -> DurationStr {
DurationStr::new(Duration::from_secs(1800))
}