pub struct DbOpWithTime<'c> { /* private fields */ }Expand description
Equivileant of DbOp just that the time is guaranteed to be cached.
Used as a wrapper of a sqlx::Transaction with cached time of the transaction.
Implementations§
Source§impl<'c> DbOpWithTime<'c>
impl<'c> DbOpWithTime<'c>
Sourcepub fn now(&self) -> DateTime<Utc>
pub fn now(&self) -> DateTime<Utc>
The cached chrono::DateTime
Sourcepub async fn begin(&mut self) -> Result<DbOpWithTime<'_>, Error>
pub async fn begin(&mut self) -> Result<DbOpWithTime<'_>, Error>
Begins a nested transaction.
Sourcepub async fn with_savepoint<T, E, F>(
&mut self,
f: F,
) -> Result<Result<T, E>, Error>
pub async fn with_savepoint<T, E, F>( &mut self, f: F, ) -> Result<Result<T, E>, Error>
Runs f inside a SAVEPOINT — see DbOp::with_savepoint.
The cached time is propagated, so the SavepointOp reports it from
maybe_now and wrapping it in
OpWithTime is free.
Sourcepub async fn begin_savepoint(&mut self) -> Result<SavepointOp<'_>, Error>
pub async fn begin_savepoint(&mut self) -> Result<SavepointOp<'_>, Error>
Begins a SAVEPOINT scope explicitly — see DbOp::begin_savepoint.
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 DbOpWithTime<'o>
impl<'o> AtomicOperation for DbOpWithTime<'o>
Source§fn maybe_now(&self) -> Option<DateTime<Utc>>
fn maybe_now(&self) -> Option<DateTime<Utc>>
Function for querying when the operation is taking place - if it is cached.
Source§fn clock(&self) -> &ClockHandle
fn clock(&self) -> &ClockHandle
Returns the clock handle for time operations. Read more
Source§fn connection(&mut self) -> &mut Connection
fn connection(&mut self) -> &mut Connection
Returns the raw underlying connection.
The desired way to represent this would actually be as a GAT: Read more
Source§fn add_commit_hook_dyn(
&mut self,
type_id: TypeId,
hook: Box<dyn DynHook>,
) -> Result<(), Box<dyn DynHook>>
fn add_commit_hook_dyn( &mut self, type_id: TypeId, hook: Box<dyn DynHook>, ) -> Result<(), Box<dyn DynHook>>
Object-safe, type-erased form of
add_commit_hook.Source§fn commit_hook_dyn(&self, type_id: TypeId) -> Option<&dyn DynHook>
fn commit_hook_dyn(&self, type_id: TypeId) -> Option<&dyn DynHook>
Object-safe, type-erased form of
commit_hook.Source§fn supports_hooks(&self) -> bool
fn supports_hooks(&self) -> bool
Whether this operation supports commit hooks. Read more
Source§fn savepoint_parts(&mut self) -> (&mut Connection, HookSlot<'_>)
fn savepoint_parts(&mut self) -> (&mut Connection, HookSlot<'_>)
Simultaneous access to the connection and the commit-hook buffer a
nested
SAVEPOINT folds into when released. Implementing this is the
only thing an operation must do to get the whole of
SavepointOperation — with_savepoint, begin_savepoint, and
arbitrary-depth nesting — for free. Read moreSource§fn as_executor(&mut self) -> OneTimeExecutor<'_, &mut Connection>
fn as_executor(&mut self) -> OneTimeExecutor<'_, &mut Connection>
Returns the
sqlx::Executor implementation that statements should be
executed through. Read moreSource§fn add_commit_hook<H: CommitHook>(&mut self, hook: H) -> Result<(), H>where
Self: Sized,
fn add_commit_hook<H: CommitHook>(&mut self, hook: H) -> Result<(), H>where
Self: Sized,
Registers a commit hook that will run pre_commit before and post_commit after the transaction commits.
Returns Ok(()) if the hook was registered, Err(hook) if hooks are not supported.
Source§fn commit_hook<H: CommitHook>(&self) -> Option<&H>where
Self: Sized,
fn commit_hook<H: CommitHook>(&self) -> Option<&H>where
Self: Sized,
Typed shared access to the currently-accumulating commit hook of type
H,
if this operation supports commit hooks and one is registered.
Returns the hook a subsequent add_commit_hook::<H> call would merge into.Source§impl<'o> AtomicOperationWithTime for DbOpWithTime<'o>
impl<'o> AtomicOperationWithTime for DbOpWithTime<'o>
Auto Trait Implementations§
impl<'c> !RefUnwindSafe for DbOpWithTime<'c>
impl<'c> !Sync for DbOpWithTime<'c>
impl<'c> !UnwindSafe for DbOpWithTime<'c>
impl<'c> Freeze for DbOpWithTime<'c>
impl<'c> Send for DbOpWithTime<'c>
impl<'c> Unpin for DbOpWithTime<'c>
impl<'c> UnsafeUnpin for DbOpWithTime<'c>
Blanket Implementations§
Source§impl<T> BatchIsolation for Twhere
T: SavepointOperation + ?Sized,
impl<T> BatchIsolation for Twhere
T: SavepointOperation + ?Sized,
Source§fn run_isolated<'a, T, V, E, F>(
&'a mut self,
items: &'a [T],
f: F,
) -> impl Future<Output = Result<Vec<Result<V, E>>, Error>> + 'awhere
T: 'a,
V: 'a,
E: 'a,
F: AsyncFnOnce(&mut SavepointOp<'_>, &T) -> Result<V, E> + Clone + Sync + 'a,
fn run_isolated<'a, T, V, E, F>(
&'a mut self,
items: &'a [T],
f: F,
) -> impl Future<Output = Result<Vec<Result<V, E>>, Error>> + 'awhere
T: 'a,
V: 'a,
E: 'a,
F: AsyncFnOnce(&mut SavepointOp<'_>, &T) -> Result<V, E> + Clone + Sync + 'a,
Source§fn run_bisected<'a, T, E, F>(
&'a mut self,
items: &'a [T],
budget: BisectBudget,
f: F,
) -> impl Future<Output = Result<BisectOutcomes<E>, Error>> + 'awhere
T: 'a,
E: Error + 'static,
F: AsyncFnOnce(&mut SavepointOp<'_>, &[T]) -> Result<(), E> + Clone + Sync + 'a,
fn run_bisected<'a, T, E, F>(
&'a mut self,
items: &'a [T],
budget: BisectBudget,
f: F,
) -> impl Future<Output = Result<BisectOutcomes<E>, Error>> + 'awhere
T: 'a,
E: Error + 'static,
F: AsyncFnOnce(&mut SavepointOp<'_>, &[T]) -> Result<(), E> + Clone + Sync + 'a,
Probes the whole slice at once, bisecting only on failure. Read more
Source§fn run_bisected_with<'a, T, E, F, P>(
&'a mut self,
items: &'a [T],
budget: BisectBudget,
policy: TransientPolicy<P>,
f: F,
) -> impl Future<Output = Result<BisectOutcomes<E>, Error>> + 'a
fn run_bisected_with<'a, T, E, F, P>( &'a mut self, items: &'a [T], budget: BisectBudget, policy: TransientPolicy<P>, f: F, ) -> impl Future<Output = Result<BisectOutcomes<E>, Error>> + 'a
run_bisected with a caller-supplied notion of
which failures are transient. Read moreSource§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> 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> SavepointOperation for Twhere
T: AtomicOperation + ?Sized,
impl<T> SavepointOperation for Twhere
T: AtomicOperation + ?Sized,
Source§fn with_savepoint<T, E, F>(
&mut self,
f: F,
) -> impl Future<Output = Result<Result<T, E>, Error>>
fn with_savepoint<T, E, F>( &mut self, f: F, ) -> impl Future<Output = Result<Result<T, E>, Error>>
Runs
f inside a SAVEPOINT, keeping its work on Ok and undoing it on
Err — see DbOp::with_savepoint for the
full contract, including the two layers of Result. Read moreSource§fn begin_savepoint(
&mut self,
) -> impl Future<Output = Result<SavepointOp<'_>, Error>> + Send
fn begin_savepoint( &mut self, ) -> impl Future<Output = Result<SavepointOp<'_>, Error>> + Send
Begins a
SAVEPOINT scope explicitly — see
DbOp::begin_savepoint. Must be finished
with release or
rollback; dropping it rolls back. Read more