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: Pool<Postgres>, auth: AuthContext, request: RequestMetadata, ) -> MutationContext

Create a new mutation context.

Source

pub fn with_dispatch( db_pool: Pool<Postgres>, auth: AuthContext, request: RequestMetadata, job_dispatch: Option<Arc<dyn JobDispatch>>, workflow_dispatch: Option<Arc<dyn WorkflowDispatch>>, ) -> MutationContext

Create a mutation context with dispatch capabilities.

Source

pub fn with_env( db_pool: Pool<Postgres>, auth: AuthContext, request: RequestMetadata, job_dispatch: Option<Arc<dyn JobDispatch>>, workflow_dispatch: Option<Arc<dyn WorkflowDispatch>>, env_provider: Arc<dyn EnvProvider>, ) -> MutationContext

Create a mutation context with a custom environment provider.

Source

pub fn db(&self) -> &Pool<Postgres>

Get a reference to the database pool.

Source

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

Get the authenticated user ID or return an error.

Source

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

Dispatch a background job.

§Arguments
  • job_type - The registered name of the job type
  • args - The arguments for the job (will be serialized to JSON)
§Returns

The UUID of the dispatched job, or an error if dispatch is not available.

Source

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

Start a workflow.

§Arguments
  • workflow_name - The registered name of the workflow
  • input - The input for the workflow (will be serialized to JSON)
§Returns

The UUID of the started workflow run, or an error if dispatch is not available.

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, ForgeError>

Get a required environment variable. Read more
Source§

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

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

fn env_parse_or<T>(&self, key: &str, default: T) -> Result<T, ForgeError>
where T: FromStr, <T as FromStr>::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