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 an artificial 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: &PgPool) -> Result<DbOp<'static>, Error>
pub async fn init(pool: &PgPool) -> 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: &PgPool,
clock: &ClockHandle,
) -> Result<DbOp<'static>, Error>
pub async fn init_with_clock( pool: &PgPool, clock: &ClockHandle, ) -> Result<DbOp<'static>, Error>
Initializes a transaction with the specified clock.
If the clock is artificial, 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
- Artificial clock time if the clock is artificial
- 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, Postgres>
pub fn tx_mut(&mut self) -> &mut Transaction<'c, Postgres>
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 PgConnection
fn as_executor(&mut self) -> &mut PgConnection
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> !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