Skip to main content

MutationContext

Struct MutationContext 

Source
pub struct MutationContext {
    pub auth: AuthContext,
    pub request: RequestMetadata,
    /* private fields */
}
Expand description

Context for mutation functions (transactional database access).

Fields§

§auth: AuthContext

Authentication context.

§request: RequestMetadata

Request metadata.

Implementations§

Source§

impl MutationContext

Source

pub fn new(db_pool: PgPool, auth: AuthContext, request: RequestMetadata) -> Self

Create a new mutation context.

Source

pub fn with_dispatch( db_pool: PgPool, auth: AuthContext, request: RequestMetadata, http_client: CircuitBreakerClient, job_dispatch: Option<Arc<dyn JobDispatch>>, workflow_dispatch: Option<Arc<dyn WorkflowDispatch>>, ) -> Self

Create a mutation context with dispatch capabilities.

Source

pub fn with_env( db_pool: PgPool, auth: AuthContext, request: RequestMetadata, http_client: CircuitBreakerClient, job_dispatch: Option<Arc<dyn JobDispatch>>, workflow_dispatch: Option<Arc<dyn WorkflowDispatch>>, env_provider: Arc<dyn EnvProvider>, ) -> Self

Create a mutation context with a custom environment provider.

Source

pub fn with_transaction( db_pool: PgPool, tx: Transaction<'static, Postgres>, auth: AuthContext, request: RequestMetadata, http_client: CircuitBreakerClient, job_info_lookup: JobInfoLookup, ) -> (Self, Arc<AsyncMutex<Transaction<'static, Postgres>>>, Arc<Mutex<OutboxBuffer>>)

Returns handles to transaction and outbox for the caller to commit/flush.

Source

pub fn is_transactional(&self) -> bool

Source

pub fn db(&self) -> DbConn<'_>

Source

pub fn pool(&self) -> &PgPool

Direct pool access for operations that cannot run inside a transaction.

Source

pub fn http(&self) -> &Client

Get the HTTP client for external requests.

The client includes circuit breaker protection that tracks failure rates per host. After repeated failures, requests fail fast to prevent cascade failures when downstream services are unhealthy.

Source

pub fn http_with_circuit_breaker(&self) -> &CircuitBreakerClient

Get the circuit breaker client directly for advanced usage.

Source

pub fn require_user_id(&self) -> Result<Uuid>

Source

pub fn require_subject(&self) -> Result<&str>

Source

pub async fn dispatch_job<T: Serialize>( &self, job_type: &str, args: T, ) -> Result<Uuid>

In transactional mode, buffers for atomic commit; otherwise dispatches immediately.

Source

pub async fn dispatch_job_with_context<T: Serialize>( &self, job_type: &str, args: T, context: Value, ) -> Result<Uuid>

Dispatch a job with initial context.

Source

pub async fn cancel_job( &self, job_id: Uuid, reason: Option<String>, ) -> Result<bool>

Request cancellation for a job.

Source

pub async fn start_workflow<T: Serialize>( &self, workflow_name: &str, input: T, ) -> Result<Uuid>

In transactional mode, buffers for atomic commit; otherwise starts immediately.

Trait Implementations§

Source§

impl EnvAccess for MutationContext

Source§

fn env_provider(&self) -> &dyn EnvProvider

Get the environment provider.
Source§

fn env(&self, key: &str) -> Option<String>

Get an environment variable. Read more
Source§

fn env_or(&self, key: &str, default: &str) -> String

Get an environment variable with a default value. Read more
Source§

fn env_require(&self, key: &str) -> Result<String>

Get a required environment variable. Read more
Source§

fn env_parse<T: FromStr>(&self, key: &str) -> Result<T>
where T::Err: Display,

Get an environment variable and parse it to the specified type. Read more
Source§

fn env_parse_or<T: FromStr>(&self, key: &str, default: T) -> Result<T>
where T::Err: Display,

Get an environment variable and parse it, with a default. Read more
Source§

fn env_contains(&self, key: &str) -> bool

Check if an environment variable is set.

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

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

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

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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