Skip to main content

WorkflowStepEnqueueBuilder

Struct WorkflowStepEnqueueBuilder 

Source
pub struct WorkflowStepEnqueueBuilder<'a> { /* private fields */ }
Expand description

Builder for WorkflowStepEnqueue.

Use this builder to configure optional per-step execution settings and dependencies.

Defaults:

  • organization_id: None
  • priority: None
  • max_attempts: None
  • timeout_seconds: None
  • stage: Some(JobStage::Queued)
  • dependencies: empty

§Examples

use runledger_core::jobs::{JobStage, JobType, StepKey, WorkflowStepEnqueueBuilder};

let payload = serde_json::json!({"profile_id": "p_123"});
let step = WorkflowStepEnqueueBuilder::new(StepKey::new("c14"), JobType::new("seller.profile.research.c14.pain_mappings"), &payload)
    .depends_on_success(&[StepKey::new("c6"), StepKey::new("c7")])
    .try_build()
    .expect("step payload should be valid");

assert_eq!(step.stage(), Some(JobStage::Queued));
assert_eq!(step.dependencies().len(), 2);

Implementations§

Source§

impl<'a> WorkflowStepEnqueueBuilder<'a>

Source

pub fn new( step_key: StepKey<'a>, job_type: JobType<'a>, payload: &'a Value, ) -> Self

Creates a new step builder with required fields and default options.

The default stage is Some(JobStage::Queued).

§Examples
use runledger_core::jobs::{JobStage, JobType, StepKey, WorkflowStepEnqueueBuilder};

let payload = serde_json::json!({});
let step = WorkflowStepEnqueueBuilder::new(StepKey::new("step.a"), JobType::new("jobs.test.a"), &payload)
    .try_build()
    .expect("step payload should be valid");

assert_eq!(step.stage(), Some(JobStage::Queued));
Source

pub fn try_new( step_key: &'a str, job_type: &'a str, payload: &'a Value, ) -> Result<Self, WorkflowBuildError>

Creates a new step builder from raw identifier strings with checked validation.

§Errors

Returns WorkflowBuildError when step_key or job_type is blank.

Source

pub fn new_external(step_key: StepKey<'a>, payload: &'a Value) -> Self

Creates a new external step builder with required fields and no queue settings.

Source

pub fn organization_id(self, organization_id: Uuid) -> Self

Sets an execution-organization override for this step.

Source

pub fn clear_organization_id(self) -> Self

Clears any previously configured execution-organization override.

Source

pub fn try_new_external( step_key: &'a str, payload: &'a Value, ) -> Result<Self, WorkflowBuildError>

Creates a new external step builder from a raw step key with checked validation.

§Errors

Returns WorkflowBuildError when step_key is blank.

Source

pub fn priority(self, priority: i32) -> Self

Sets job priority override for this step.

§Examples
use runledger_core::jobs::{JobType, StepKey, WorkflowStepEnqueueBuilder};

let payload = serde_json::json!({});
let step = WorkflowStepEnqueueBuilder::new(StepKey::new("step.a"), JobType::new("jobs.test.a"), &payload)
    .priority(10)
    .try_build()
    .expect("step payload should be valid");

assert_eq!(step.priority(), Some(10));
Source

pub fn clear_priority(self) -> Self

Clears any previously configured priority override.

Source

pub fn max_attempts(self, max_attempts: i32) -> Self

Sets max retry attempts override for this step.

§Examples
use runledger_core::jobs::{JobType, StepKey, WorkflowStepEnqueueBuilder};

let payload = serde_json::json!({});
let step = WorkflowStepEnqueueBuilder::new(StepKey::new("step.a"), JobType::new("jobs.test.a"), &payload)
    .max_attempts(5)
    .try_build()
    .expect("step payload should be valid");

assert_eq!(step.max_attempts(), Some(5));
Source

pub fn clear_max_attempts(self) -> Self

Clears any previously configured max-attempts override.

Source

pub fn timeout_seconds(self, timeout_seconds: i32) -> Self

Sets timeout override (in seconds) for this step.

§Examples
use runledger_core::jobs::{JobType, StepKey, WorkflowStepEnqueueBuilder};

let payload = serde_json::json!({});
let step = WorkflowStepEnqueueBuilder::new(StepKey::new("step.a"), JobType::new("jobs.test.a"), &payload)
    .timeout_seconds(300)
    .try_build()
    .expect("step payload should be valid");

assert_eq!(step.timeout_seconds(), Some(300));
Source

pub fn clear_timeout_seconds(self) -> Self

Clears any previously configured timeout override.

Source

pub fn stage(self, stage: JobStage) -> Self

Sets the initial step stage.

§Examples
use runledger_core::jobs::{JobStage, JobType, StepKey, WorkflowStepEnqueueBuilder};

let payload = serde_json::json!({});
let step = WorkflowStepEnqueueBuilder::new(StepKey::new("step.a"), JobType::new("jobs.test.a"), &payload)
    .stage(JobStage::Scheduled)
    .try_build()
    .expect("step payload should be valid");

assert_eq!(step.stage(), Some(JobStage::Scheduled));
Source

pub fn clear_stage(self) -> Self

Clears any previously configured step stage.

Source

pub fn set_dependencies( self, dependencies: impl IntoIterator<Item = WorkflowStepDependencySpec<'a>>, ) -> Self

Replaces all previously configured dependencies with dependencies.

Source

pub fn dependency(self, dependency: WorkflowStepDependencySpec<'a>) -> Self

Appends one dependency specification.

Source

pub fn depends_on_terminal(self, prerequisite_step_keys: &[StepKey<'a>]) -> Self

Adds dependencies released when prerequisite steps reach a terminal state.

Appends to any existing dependencies in call order.

§Examples
use runledger_core::jobs::{StepKey, JobType, WorkflowDependencyReleaseMode, WorkflowStepEnqueueBuilder};

let payload = serde_json::json!({});
let step = WorkflowStepEnqueueBuilder::new(StepKey::new("step.b"), JobType::new("jobs.test.b"), &payload)
    .depends_on_terminal(&[StepKey::new("step.a")])
    .try_build()
    .expect("step payload should be valid");

assert_eq!(
    step.dependencies()[0].release_mode,
    Some(WorkflowDependencyReleaseMode::OnTerminal)
);
Source

pub fn depends_on_success(self, prerequisite_step_keys: &[StepKey<'a>]) -> Self

Adds dependencies released only when prerequisite steps succeed.

Appends to any existing dependencies in call order.

§Examples
use runledger_core::jobs::{StepKey, JobType, WorkflowDependencyReleaseMode, WorkflowStepEnqueueBuilder};

let payload = serde_json::json!({});
let step = WorkflowStepEnqueueBuilder::new(StepKey::new("step.b"), JobType::new("jobs.test.b"), &payload)
    .depends_on_success(&[StepKey::new("step.a")])
    .try_build()
    .expect("step payload should be valid");

assert_eq!(
    step.dependencies()[0].release_mode,
    Some(WorkflowDependencyReleaseMode::OnSuccess)
);
Source

pub fn try_build(self) -> Result<WorkflowStepEnqueue<'a>, WorkflowBuildError>

Finalizes the builder and returns a validated WorkflowStepEnqueue.

§Errors

Returns WorkflowBuildError if required fields are empty or dependencies are invalid (blank, duplicate, or self-referential).

§Examples
use runledger_core::jobs::{JobType, StepKey, WorkflowStepEnqueueBuilder};

let payload = serde_json::json!({});
let step = WorkflowStepEnqueueBuilder::new(StepKey::new("step.a"), JobType::new("jobs.test.a"), &payload)
    .try_build()
    .expect("step payload should be valid");

assert_eq!(step.step_key(), StepKey::new("step.a"));

Trait Implementations§

Source§

impl<'a> Clone for WorkflowStepEnqueueBuilder<'a>

Source§

fn clone(&self) -> WorkflowStepEnqueueBuilder<'a>

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<'a> Debug for WorkflowStepEnqueueBuilder<'a>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.