#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum StepCancelStatus {
None,
Confirmed,
AlreadyTerminal,
ResolutionPending,
}
impl StepCancelStatus {
pub fn as_str(self) -> &'static str {
match self {
Self::None => "NONE",
Self::Confirmed => "CONFIRMED",
Self::AlreadyTerminal => "ALREADY_TERMINAL",
Self::ResolutionPending => "RESOLUTION_PENDING",
}
}
pub fn parse(raw: &str) -> Option<Self> {
match raw {
"NONE" => Some(Self::None),
"CONFIRMED" => Some(Self::Confirmed),
"ALREADY_TERMINAL" => Some(Self::AlreadyTerminal),
"RESOLUTION_PENDING" => Some(Self::ResolutionPending),
_ => None,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum StepCompensationStatus {
None,
Pending,
Succeeded,
Unknown,
Halted,
}
impl StepCompensationStatus {
pub fn as_str(self) -> &'static str {
match self {
Self::None => "NONE",
Self::Pending => "PENDING",
Self::Succeeded => "SUCCEEDED",
Self::Unknown => "UNKNOWN",
Self::Halted => "HALTED",
}
}
pub fn parse(raw: &str) -> Option<Self> {
match raw {
"NONE" => Some(Self::None),
"PENDING" => Some(Self::Pending),
"SUCCEEDED" => Some(Self::Succeeded),
"UNKNOWN" => Some(Self::Unknown),
"HALTED" => Some(Self::Halted),
_ => None,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum StepResolutionStatus {
None,
Pending,
Succeeded,
Rejected,
Halted,
}
impl StepResolutionStatus {
pub fn as_str(self) -> &'static str {
match self {
Self::None => "NONE",
Self::Pending => "PENDING",
Self::Succeeded => "SUCCEEDED",
Self::Rejected => "REJECTED",
Self::Halted => "HALTED",
}
}
pub fn parse(raw: &str) -> Option<Self> {
match raw {
"NONE" => Some(Self::None),
"PENDING" => Some(Self::Pending),
"SUCCEEDED" => Some(Self::Succeeded),
"REJECTED" => Some(Self::Rejected),
"HALTED" => Some(Self::Halted),
_ => None,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum StepAttemptStatus {
Started,
Succeeded,
Rejected,
Unknown,
Halted,
CancelConfirmed,
AlreadyTerminal,
ResolutionPending,
}
impl StepAttemptStatus {
pub fn as_str(self) -> &'static str {
match self {
Self::Started => "STARTED",
Self::Succeeded => "SUCCEEDED",
Self::Rejected => "REJECTED",
Self::Unknown => "UNKNOWN",
Self::Halted => "HALTED",
Self::CancelConfirmed => "CANCEL_CONFIRMED",
Self::AlreadyTerminal => "ALREADY_TERMINAL",
Self::ResolutionPending => "RESOLUTION_PENDING",
}
}
pub fn parse(raw: &str) -> Option<Self> {
match raw {
"STARTED" => Some(Self::Started),
"SUCCEEDED" => Some(Self::Succeeded),
"REJECTED" => Some(Self::Rejected),
"UNKNOWN" => Some(Self::Unknown),
"HALTED" => Some(Self::Halted),
"CANCEL_CONFIRMED" => Some(Self::CancelConfirmed),
"ALREADY_TERMINAL" => Some(Self::AlreadyTerminal),
"RESOLUTION_PENDING" => Some(Self::ResolutionPending),
_ => None,
}
}
pub fn is_in_flight(self) -> bool {
matches!(self, Self::Started)
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum TriggerKind {
Event,
Timer,
Admin,
}
impl TriggerKind {
pub fn as_str(self) -> &'static str {
match self {
Self::Event => "EVENT",
Self::Timer => "TIMER",
Self::Admin => "ADMIN",
}
}
pub fn parse(raw: &str) -> Option<Self> {
match raw {
"EVENT" => Some(Self::Event),
"TIMER" => Some(Self::Timer),
"ADMIN" => Some(Self::Admin),
_ => None,
}
}
}