StateChangeBuilder

Struct StateChangeBuilder 

Source
pub struct StateChangeBuilder { /* private fields */ }
Expand description

Builder for executing state changes.

§Example

let db = conn
    .state_change("create-account", 1)
    .json(&CreateAccountRequest { name: "Alice" })?
    .with_correlation_id("order-12345")
    .execute()
    .await?;

Implementations§

Source§

impl StateChangeBuilder

Source

pub fn new( connection: Connection, name: String, version: StateChangeVersion, ) -> Self

Create a new state change builder.

Source

pub fn json<T: Serialize>(self, value: &T) -> Result<Self, CommandRequestError>

Set the request body as JSON.

Source

pub fn request(self, request: CommandRequest) -> Self

Set the raw command request.

Source

pub fn with_transaction_id(self, transaction_id: impl Into<String>) -> Self

Set a specific transaction ID for idempotency.

Source

pub fn with_correlation_id(self, correlation_id: impl Into<String>) -> Self

Set the correlation ID for grouping related events in a business flow.

See: https://github.com/cloudevents/spec/blob/main/cloudevents/extensions/correlation.md

Source

pub fn with_causation_id(self, causation_id: impl Into<String>) -> Self

Set the causation ID for parent-child event relationships.

See: https://github.com/cloudevents/spec/blob/main/cloudevents/extensions/correlation.md

Source

pub fn content_type(self, content_type: impl Into<String>) -> Self

Set the content type for the request.

If no request exists yet, creates a default request.

§Example
let db = conn
    .state_change("process-xml", 1)
    .request(CommandRequest::with_body(xml_bytes))
    .content_type("application/xml")
    .execute()
    .await?;
Source

pub fn content_schema(self, schema_url: impl Into<String>) -> Self

Set the content schema URL for the request.

If no request exists yet, creates a default request.

§Example
let db = conn
    .state_change("create-account", 1)
    .json(&request)?
    .content_schema("https://example.com/schemas/create-account.json")
    .execute()
    .await?;
Source

pub async fn execute(self) -> Result<DatabaseAtRevisionImpl, StateChangeError>

Execute the state change synchronously.

Source

pub async fn execute_async(self) -> Result<CorrelationId, StateChangeError>

Execute the state change asynchronously.

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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> IntoRequest<T> for T

Source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
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.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more