pub struct DbOp<'c> { /* private fields */ }Expand description
Default return type of the derived EsRepo::begin_op().
Used as a wrapper of a sqlx::Transaction but can also cache the time at which the
transaction is taking place.
When a manual clock is provided, the transaction will automatically cache that clock’s time, enabling deterministic testing. This cached time will be used in all time-dependent operations.
Implementations§
Source§impl<'c> DbOp<'c>
impl<'c> DbOp<'c>
Sourcepub async fn init(pool: &Pool) -> Result<DbOp<'static>, Error>
pub async fn init(pool: &Pool) -> Result<DbOp<'static>, Error>
Initializes a transaction using the global clock.
Delegates to init_with_clock using the global clock handle.
Sourcepub async fn init_with_clock(
pool: &Pool,
clock: &ClockHandle,
) -> Result<DbOp<'static>, Error>
pub async fn init_with_clock( pool: &Pool, clock: &ClockHandle, ) -> Result<DbOp<'static>, Error>
Initializes a transaction with the specified clock.
If the clock is manual, its current time will be cached in the transaction.
Sourcepub fn with_time(self, time: DateTime<Utc>) -> DbOpWithTime<'c>
pub fn with_time(self, time: DateTime<Utc>) -> DbOpWithTime<'c>
Transitions to a DbOpWithTime with the given time cached.
Sourcepub fn with_clock_time(self) -> DbOpWithTime<'c>
pub fn with_clock_time(self) -> DbOpWithTime<'c>
Transitions to a DbOpWithTime using the clock.
Uses cached time if present, otherwise uses the clock’s current time.
Sourcepub async fn with_db_time(self) -> Result<DbOpWithTime<'c>, Error>
pub async fn with_db_time(self) -> Result<DbOpWithTime<'c>, Error>
Transitions to a DbOpWithTime using the database time.
Priority order:
- Cached time if present
- Manual clock time if the clock is manual
- Database time via
SELECT NOW()
Sourcepub fn maybe_now(&self) -> Option<DateTime<Utc>>
pub fn maybe_now(&self) -> Option<DateTime<Utc>>
Returns the optionally cached chrono::DateTime
Sourcepub fn tx_mut(&mut self) -> &mut Transaction<'c, Db>
pub fn tx_mut(&mut self) -> &mut Transaction<'c, Db>
Gets a mutable handle to the inner transaction
Trait Implementations§
Source§impl<'o> AtomicOperation for DbOp<'o>
impl<'o> AtomicOperation for DbOp<'o>
Source§fn maybe_now(&self) -> Option<DateTime<Utc>>
fn maybe_now(&self) -> Option<DateTime<Utc>>
Source§fn clock(&self) -> &ClockHandle
fn clock(&self) -> &ClockHandle
Source§fn as_executor(&mut self) -> &mut Connection
fn as_executor(&mut self) -> &mut Connection
sqlx::Executor implementation.
The desired way to represent this would actually be as a GAT: Read moreSource§fn add_commit_hook<H: CommitHook>(&mut self, hook: H) -> Result<(), H>
fn add_commit_hook<H: CommitHook>(&mut self, hook: H) -> Result<(), H>
Auto Trait Implementations§
impl<'c> Freeze for DbOp<'c>
impl<'c> !RefUnwindSafe for DbOp<'c>
impl<'c> Send for DbOp<'c>
impl<'c> !Sync for DbOp<'c>
impl<'c> Unpin for DbOp<'c>
impl<'c> UnsafeUnpin for DbOp<'c>
impl<'c> !UnwindSafe for DbOp<'c>
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
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>
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>
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