pub struct TransactionMiddleware<DB: Database, E = Error> { /* private fields */ }Expand description
This middleware adds a lazily-initialised transaction to the request extensions. The first time the
Tx extractor is used on a request, a connection is acquired from the configured
sqlx::Pool and a transaction is started on it. The same transaction will be returned for
subsequent uses of Tx on the same request. The inner service is then called as normal. Once
the inner service responds, the transaction is committed or rolled back depending on the status
code of the response.
Implementations§
Source§impl<DB: Database> TransactionMiddleware<DB>
impl<DB: Database> TransactionMiddleware<DB>
pub fn new(pool: Pool<DB>) -> Self
Sourcepub fn new_with_error<E>(pool: Pool<DB>) -> TransactionMiddleware<DB, E>
pub fn new_with_error<E>(pool: Pool<DB>) -> TransactionMiddleware<DB, E>
Construct a new layer with a specific error type.
Trait Implementations§
Source§impl<DB: Clone + Database, E: Clone> Clone for TransactionMiddleware<DB, E>
impl<DB: Clone + Database, E: Clone> Clone for TransactionMiddleware<DB, E>
Source§fn clone(&self) -> TransactionMiddleware<DB, E>
fn clone(&self) -> TransactionMiddleware<DB, E>
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl<S, B, DB, E> Transform<S, ServiceRequest> for TransactionMiddleware<DB, E>where
S: Service<ServiceRequest, Response = ServiceResponse<B>, Error = Error> + 'static,
S::Future: 'static,
B: MessageBody + 'static,
DB: Database + 'static,
E: From<Error> + ResponseError + 'static,
impl<S, B, DB, E> Transform<S, ServiceRequest> for TransactionMiddleware<DB, E>where
S: Service<ServiceRequest, Response = ServiceResponse<B>, Error = Error> + 'static,
S::Future: 'static,
B: MessageBody + 'static,
DB: Database + 'static,
E: From<Error> + ResponseError + 'static,
Source§type Response = ServiceResponse<B>
type Response = ServiceResponse<B>
Responses produced by the service.
Source§type Transform = InnerTransactionMiddleware<S, DB, E>
type Transform = InnerTransactionMiddleware<S, DB, E>
The
TransformService value created by this factorySource§type Future = Ready<Result<<TransactionMiddleware<DB, E> as Transform<S, ServiceRequest>>::Transform, <TransactionMiddleware<DB, E> as Transform<S, ServiceRequest>>::InitError>>
type Future = Ready<Result<<TransactionMiddleware<DB, E> as Transform<S, ServiceRequest>>::Transform, <TransactionMiddleware<DB, E> as Transform<S, ServiceRequest>>::InitError>>
The future response value.
Source§fn new_transform(&self, service: S) -> Self::Future
fn new_transform(&self, service: S) -> Self::Future
Creates and returns a new Transform component, asynchronously
Auto Trait Implementations§
impl<DB, E> Freeze for TransactionMiddleware<DB, E>
impl<DB, E = Error> !RefUnwindSafe for TransactionMiddleware<DB, E>
impl<DB, E = Error> !Send for TransactionMiddleware<DB, E>
impl<DB, E = Error> !Sync for TransactionMiddleware<DB, E>
impl<DB, E> Unpin for TransactionMiddleware<DB, E>where
E: Unpin,
impl<DB, E = Error> !UnwindSafe for TransactionMiddleware<DB, E>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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