use dex_sdk::{Context, Flow, HandlerResult, Step, StepDecision, StepList};
pub(crate) struct SkipWaitUntilWorkflow {
first: FirstStep,
second: SecondStep,
}
impl SkipWaitUntilWorkflow {
pub(crate) fn new() -> Self {
Self {
first: FirstStep,
second: SecondStep,
}
}
}
impl Flow for SkipWaitUntilWorkflow {
type StartInput = i32;
fn steps(&self) -> StepList<'_, Self::StartInput> {
StepList::start(&self.first).and(&self.second)
}
}
struct FirstStep;
impl Step for FirstStep {
type Input = i32;
fn execute(&self, _context: &mut Context, input: i32) -> HandlerResult<StepDecision> {
Ok(StepDecision::go_to(&SecondStep, input + 1))
}
}
struct SecondStep;
impl Step for SecondStep {
type Input = i32;
fn execute(&self, _context: &mut Context, input: i32) -> HandlerResult<StepDecision> {
Ok(StepDecision::graceful_complete(input + 1))
}
}