pub struct OpWithTime<'a, Op: AtomicOperation + ?Sized> { /* private fields */ }Expand description
Wrapper that guarantees time is available, borrowing the underlying operation.
Implementations§
Source§impl<'a, Op: AtomicOperation + ?Sized> OpWithTime<'a, Op>
impl<'a, Op: AtomicOperation + ?Sized> OpWithTime<'a, Op>
Sourcepub async fn cached_or_db_time(op: &'a mut Op) -> Result<Self, Error>
pub async fn cached_or_db_time(op: &'a mut Op) -> Result<Self, Error>
Wraps an operation, using existing time if present, otherwise fetching from DB.
Priority order:
- Cached time from operation
- Artificial clock time if the operation’s clock is artificial
- Database time via
SELECT NOW()
Sourcepub fn cached_or_time(op: &'a mut Op, time: DateTime<Utc>) -> Self
pub fn cached_or_time(op: &'a mut Op, time: DateTime<Utc>) -> Self
Wraps with a specific time (uses existing if present).
Sourcepub fn cached_or_clock_time(op: &'a mut Op) -> Self
pub fn cached_or_clock_time(op: &'a mut Op) -> Self
Wraps using system time (uses existing if present).
Uses cached time if present, otherwise uses the operation’s clock.
pub fn now(&self) -> DateTime<Utc>
Trait Implementations§
Source§impl<'a, Op: AtomicOperation + ?Sized> AtomicOperation for OpWithTime<'a, Op>
impl<'a, Op: AtomicOperation + ?Sized> AtomicOperation for OpWithTime<'a, Op>
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 as_executor(&mut self) -> &mut PgConnection
fn as_executor(&mut self) -> &mut PgConnection
Returns the
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>
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§impl<'a, Op: AtomicOperation + ?Sized> AtomicOperationWithTime for OpWithTime<'a, Op>
impl<'a, Op: AtomicOperation + ?Sized> AtomicOperationWithTime for OpWithTime<'a, Op>
Auto Trait Implementations§
impl<'a, Op> Freeze for OpWithTime<'a, Op>where
Op: ?Sized,
impl<'a, Op> RefUnwindSafe for OpWithTime<'a, Op>where
Op: RefUnwindSafe + ?Sized,
impl<'a, Op> Send for OpWithTime<'a, Op>where
Op: ?Sized,
impl<'a, Op> Sync for OpWithTime<'a, Op>
impl<'a, Op> Unpin for OpWithTime<'a, Op>where
Op: ?Sized,
impl<'a, Op> !UnwindSafe for OpWithTime<'a, Op>
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> 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 more