pub struct ActivityTx(/* private fields */);Expand description
A transaction handle exposed to #[activity] methods as self.tx.
Wraps an active SQL transaction and implements sqlx::Executor for &ActivityTx,
so activities can write &self.tx anywhere sqlx expects an executor — just like
&self.pool works for sqlx::PgPool.
ⓘ
#[activity]
pub async fn transfer(&self, amount: i64) -> Result<(), ClusterError> {
sqlx::query("UPDATE accounts SET balance = balance - $1")
.bind(amount)
.execute(&self.tx)
.await?;
Ok(())
}The transaction is opened by the activity wrapper before the method runs and committed (with the journal entry) after the method returns.
Implementations§
Source§impl ActivityTx
impl ActivityTx
Sourcepub fn new(tx: Transaction<'static, Postgres>) -> Self
pub fn new(tx: Transaction<'static, Postgres>) -> Self
Create a new ActivityTx wrapping an open transaction.
Sourcepub async fn into_inner(self) -> Transaction<'static, Postgres>
pub async fn into_inner(self) -> Transaction<'static, Postgres>
Consume this wrapper and return the inner transaction.
Used by the activity wrapper after the method returns to save the journal entry and commit.
Trait Implementations§
Source§impl Debug for ActivityTx
impl Debug for ActivityTx
Source§impl<'c> Executor<'c> for &'c ActivityTx
impl<'c> Executor<'c> for &'c ActivityTx
type Database = Postgres
Source§fn fetch_many<'e, 'q: 'e, E>(
self,
query: E,
) -> BoxStream<'e, Result<Either<PgQueryResult, PgRow>, Error>>
fn fetch_many<'e, 'q: 'e, E>( self, query: E, ) -> BoxStream<'e, Result<Either<PgQueryResult, PgRow>, Error>>
Execute multiple queries and return the generated results as a stream
from each query, in a stream.
Source§fn fetch_optional<'e, 'q: 'e, E>(
self,
query: E,
) -> BoxFuture<'e, Result<Option<PgRow>, Error>>
fn fetch_optional<'e, 'q: 'e, E>( self, query: E, ) -> BoxFuture<'e, Result<Option<PgRow>, Error>>
Execute the query and returns at most one row.
Source§fn prepare_with<'e, 'q: 'e>(
self,
sql: &'q str,
parameters: &'e [<Postgres as Database>::TypeInfo],
) -> BoxFuture<'e, Result<<Postgres as Database>::Statement<'q>, Error>>where
'c: 'e,
fn prepare_with<'e, 'q: 'e>(
self,
sql: &'q str,
parameters: &'e [<Postgres as Database>::TypeInfo],
) -> BoxFuture<'e, Result<<Postgres as Database>::Statement<'q>, Error>>where
'c: 'e,
Prepare the SQL query, with parameter type information, to inspect the
type information about its parameters and results. Read more
Source§fn execute<'e, 'q, E>(
self,
query: E,
) -> Pin<Box<dyn Future<Output = Result<<Self::Database as Database>::QueryResult, Error>> + Send + 'e>>
fn execute<'e, 'q, E>( self, query: E, ) -> Pin<Box<dyn Future<Output = Result<<Self::Database as Database>::QueryResult, Error>> + Send + 'e>>
Execute the query and return the total number of rows affected.
Source§fn execute_many<'e, 'q, E>(
self,
query: E,
) -> Pin<Box<dyn Stream<Item = Result<<Self::Database as Database>::QueryResult, Error>> + Send + 'e>>
fn execute_many<'e, 'q, E>( self, query: E, ) -> Pin<Box<dyn Stream<Item = Result<<Self::Database as Database>::QueryResult, Error>> + Send + 'e>>
Execute multiple queries and return the rows affected from each query, in a stream.
Source§fn fetch<'e, 'q, E>(
self,
query: E,
) -> Pin<Box<dyn Stream<Item = Result<<Self::Database as Database>::Row, Error>> + Send + 'e>>
fn fetch<'e, 'q, E>( self, query: E, ) -> Pin<Box<dyn Stream<Item = Result<<Self::Database as Database>::Row, Error>> + Send + 'e>>
Execute the query and return the generated results as a stream.
Source§fn fetch_all<'e, 'q, E>(
self,
query: E,
) -> Pin<Box<dyn Future<Output = Result<Vec<<Self::Database as Database>::Row>, Error>> + Send + 'e>>
fn fetch_all<'e, 'q, E>( self, query: E, ) -> Pin<Box<dyn Future<Output = Result<Vec<<Self::Database as Database>::Row>, Error>> + Send + 'e>>
Execute the query and return all the generated results, collected into a
Vec.Auto Trait Implementations§
impl !Freeze for ActivityTx
impl !RefUnwindSafe for ActivityTx
impl Send for ActivityTx
impl Sync for ActivityTx
impl Unpin for ActivityTx
impl UnsafeUnpin for ActivityTx
impl !UnwindSafe for ActivityTx
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> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
Source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
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 moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::Request