Skip to main content

BatchOp

Struct BatchOp 

Source
pub struct BatchOp<'inv> { /* private fields */ }
Expand description

An op joined to the pending batch. Implements AtomicOperation — use it exactly like any atomic operation, then exit with commit or defer.

There is no mutable access to the raw es_entity::DbOp (only a shared Deref view): committing, rolling back, or swapping out the underlying op is unrepresentable, so work and checkpoint can only land together, through the runner.

Implementations§

Source§

impl<'inv> BatchOp<'inv>

Source

pub fn commit(self) -> Handled<'inv>

Land the whole batch (my work included) when the invocation returns: checkpoint at my sequence → commit.

Source

pub fn defer(self) -> Handled<'inv>

Leave the op open so subsequent events can coalesce into it. The runner lands it when the ready persistent backlog is drained, when the configured max batch size is reached, when a later event commits or isolates, or on shutdown.

Methods from Deref<Target = DbOp<'static>>§

Source

pub fn maybe_now(&self) -> Option<DateTime<Utc>>

Returns the optionally cached chrono::DateTime

Trait Implementations§

Source§

impl AtomicOperation for BatchOp<'_>

Full delegation to the inner es_entity::DbOp — including the provided methods, which es_entity::DbOp overrides (supports_hooks is true, commit_hook returns registered hooks, maybe_now/clock carry the op’s cached time and clock). Inheriting the trait defaults instead would silently report supports_hooks() == false and lose the op time.

This lets handlers pass &mut op directly to any fn(&mut impl AtomicOperation) API (service *_in_op methods, spawn_in_op, publish_persisted_in_op, …) — and it is the only mutable surface: with no DerefMut, a &mut es_entity::DbOp can never be obtained from the guard (which would allow std::mem::swap-ing in a decoy op and committing the real one without its checkpoint).

Source§

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

Returns the clock handle for time operations. Read more
Source§

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 as_executor(&mut self) -> OneTimeExecutor<'_, &mut Connection>

Returns the sqlx::Executor implementation that statements should be executed through. Read more
Source§

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§

fn commit_hook<H: CommitHook>(&self) -> Option<&H>

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§

fn supports_hooks(&self) -> bool

Whether this operation supports commit hooks. Read more
Source§

impl Deref for BatchOp<'_>

Source§

type Target = DbOp<'static>

The resulting type after dereferencing.
Source§

fn deref(&self) -> &Self::Target

Dereferences the value.

Auto Trait Implementations§

§

impl<'inv> !RefUnwindSafe for BatchOp<'inv>

§

impl<'inv> !Sync for BatchOp<'inv>

§

impl<'inv> !UnwindSafe for BatchOp<'inv>

§

impl<'inv> Freeze for BatchOp<'inv>

§

impl<'inv> Send for BatchOp<'inv>

§

impl<'inv> Unpin for BatchOp<'inv>

§

impl<'inv> UnsafeUnpin for BatchOp<'inv>

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> FutureExt for T

Source§

fn with_context(self, otel_cx: Context) -> WithContext<Self>

Attaches the provided Context to this type, returning a WithContext wrapper. Read more
Source§

fn with_current_context(self) -> WithContext<Self>

Attaches the current Context to this type, returning a WithContext wrapper. Read more
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<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
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