Transaction

Struct Transaction 

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

High-level transaction wrapper with automatic cleanup and enhanced functionality

Implementations§

Source§

impl Transaction

Source

pub async fn begin( pool: &ManagedPool, config: TransactionConfig, ) -> Result<Transaction, ModelError>

Create a new transaction with the given configuration

Source

pub async fn begin_default( pool: &ManagedPool, ) -> Result<Transaction, ModelError>

Create a transaction with default configuration

Source

pub async fn begin_read_only( pool: &ManagedPool, ) -> Result<Transaction, ModelError>

Create a read-only transaction

Source

pub async fn begin_serializable( pool: &ManagedPool, ) -> Result<Transaction, ModelError>

Create a serializable transaction

Source

pub fn is_active(&self) -> bool

Check if transaction is still active

Source

pub fn as_mut(&mut self) -> Option<&mut Box<dyn DatabaseTransaction>>

Get a mutable reference to the underlying database transaction

§Safety

This method provides direct access to the underlying transaction. Care should be taken not to commit or rollback the transaction directly as this will invalidate the Transaction wrapper.

Source

pub fn as_ref(&self) -> Option<&Box<dyn DatabaseTransaction>>

Get an immutable reference to the underlying database transaction

Source

pub async fn execute( &mut self, sql: &str, params: &[DatabaseValue], ) -> Result<u64, ModelError>

Execute a query within this transaction

Source

pub async fn fetch_all( &mut self, sql: &str, params: &[DatabaseValue], ) -> Result<Vec<Box<dyn DatabaseRow>>, ModelError>

Fetch all rows from a query within this transaction

Source

pub async fn fetch_optional( &mut self, sql: &str, params: &[DatabaseValue], ) -> Result<Option<Box<dyn DatabaseRow>>, ModelError>

Fetch optional single row from a query within this transaction

Source

pub async fn execute_with<F, Fut, R>(&mut self, f: F) -> Result<R, ModelError>
where F: FnOnce(&mut Self) -> Fut, Fut: Future<Output = Result<R, ModelError>>,

Execute a closure within the transaction scope with a borrowed transaction

This is a safe way to execute database operations within a transaction. The closure receives access to execute queries against the transaction.

Source

pub async fn commit(self) -> ModelResult<()>

Commit the transaction

Source

pub async fn rollback(self) -> ModelResult<()>

Rollback the transaction

Source

pub fn is_committed(&self) -> bool

Check if the transaction has been committed

Source

pub fn config(&self) -> &TransactionConfig

Get the transaction configuration

Trait Implementations§

Source§

impl Drop for Transaction

Source§

fn drop(&mut self)

Automatic cleanup: rollback the transaction if it hasn’t been committed or rolled back

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> 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
Source§

impl<T> ErasedDestructor for T
where T: 'static,