pub struct SqlxInvalidationOutbox { /* private fields */ }Expand description
SQLx-backed invalidation outbox.
Implementations§
Source§impl SqlxInvalidationOutbox
impl SqlxInvalidationOutbox
Sourcepub fn sqlite(pool: Pool<Sqlite>) -> SqlxInvalidationOutbox
pub fn sqlite(pool: Pool<Sqlite>) -> SqlxInvalidationOutbox
Build a SQLite-backed outbox.
Sourcepub fn postgres(pool: Pool<Postgres>) -> SqlxInvalidationOutbox
pub fn postgres(pool: Pool<Postgres>) -> SqlxInvalidationOutbox
Build a Postgres-backed outbox.
Sourcepub async fn install_schema(&self) -> Result<(), DbCacheError>
pub async fn install_schema(&self) -> Result<(), DbCacheError>
Install the outbox schema if it is missing.
Migrations are copyable and idempotent. Applications may run their own migration system instead; this helper exists for tests and small demos.
Sourcepub async fn check_schema(&self) -> Result<(), DbCacheError>
pub async fn check_schema(&self) -> Result<(), DbCacheError>
Refuse to operate against missing or unknown future schema versions.
Sourcepub async fn enqueue_in_sqlite_tx(
&self,
tx: &mut Transaction<'_, Sqlite>,
namespace: &str,
commit_position: &CommitPosition,
batch: &InvalidationIntentBatch,
) -> Result<usize, DbCacheError>
pub async fn enqueue_in_sqlite_tx( &self, tx: &mut Transaction<'_, Sqlite>, namespace: &str, commit_position: &CommitPosition, batch: &InvalidationIntentBatch, ) -> Result<usize, DbCacheError>
Enqueue intent inside an existing SQLite transaction.
Sourcepub async fn enqueue_in_postgres_tx(
&self,
tx: &mut Transaction<'_, Postgres>,
namespace: &str,
commit_position: &CommitPosition,
batch: &InvalidationIntentBatch,
) -> Result<usize, DbCacheError>
pub async fn enqueue_in_postgres_tx( &self, tx: &mut Transaction<'_, Postgres>, namespace: &str, commit_position: &CommitPosition, batch: &InvalidationIntentBatch, ) -> Result<usize, DbCacheError>
Enqueue intent inside an existing Postgres transaction.
Sourcepub async fn postgres_commit_position(
&self,
tx: &mut Transaction<'_, Postgres>,
) -> Result<CommitPosition, DbCacheError>
pub async fn postgres_commit_position( &self, tx: &mut Transaction<'_, Postgres>, ) -> Result<CommitPosition, DbCacheError>
Read the current Postgres transaction id as a commit-position fallback.
Trait Implementations§
Source§impl Clone for SqlxInvalidationOutbox
impl Clone for SqlxInvalidationOutbox
Source§fn clone(&self) -> SqlxInvalidationOutbox
fn clone(&self) -> SqlxInvalidationOutbox
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for SqlxInvalidationOutbox
impl Debug for SqlxInvalidationOutbox
Source§impl InvalidationOutbox for SqlxInvalidationOutbox
impl InvalidationOutbox for SqlxInvalidationOutbox
Source§fn enqueue<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
namespace: &'life1 str,
commit_position: &'life2 CommitPosition,
batch: &'life3 InvalidationIntentBatch,
) -> Pin<Box<dyn Future<Output = Result<usize, DbCacheError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
SqlxInvalidationOutbox: 'async_trait,
fn enqueue<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
namespace: &'life1 str,
commit_position: &'life2 CommitPosition,
batch: &'life3 InvalidationIntentBatch,
) -> Pin<Box<dyn Future<Output = Result<usize, DbCacheError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
SqlxInvalidationOutbox: 'async_trait,
Enqueue a batch for a namespace and commit position.
Source§fn claim<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
namespace: &'life1 str,
owner: &'life2 str,
limit: usize,
claim_ttl: Duration,
) -> Pin<Box<dyn Future<Output = Result<Vec<OutboxRow>, DbCacheError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
SqlxInvalidationOutbox: 'async_trait,
fn claim<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
namespace: &'life1 str,
owner: &'life2 str,
limit: usize,
claim_ttl: Duration,
) -> Pin<Box<dyn Future<Output = Result<Vec<OutboxRow>, DbCacheError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
SqlxInvalidationOutbox: 'async_trait,
Claim up to
limit rows for a worker owner.Source§fn mark_published<'life0, 'life1, 'async_trait>(
&'life0 self,
ids: &'life1 [String],
) -> Pin<Box<dyn Future<Output = Result<(), DbCacheError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
SqlxInvalidationOutbox: 'async_trait,
fn mark_published<'life0, 'life1, 'async_trait>(
&'life0 self,
ids: &'life1 [String],
) -> Pin<Box<dyn Future<Output = Result<(), DbCacheError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
SqlxInvalidationOutbox: 'async_trait,
Mark rows published after invalidation was applied.
Source§fn mark_failed<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
id: &'life1 str,
error: &'life2 str,
backoff: Duration,
dead: bool,
) -> Pin<Box<dyn Future<Output = Result<(), DbCacheError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
SqlxInvalidationOutbox: 'async_trait,
fn mark_failed<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
id: &'life1 str,
error: &'life2 str,
backoff: Duration,
dead: bool,
) -> Pin<Box<dyn Future<Output = Result<(), DbCacheError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
SqlxInvalidationOutbox: 'async_trait,
Mark one row failed, with retry backoff or dead-letter state.
Source§fn reset_dead_letters<'life0, 'life1, 'async_trait>(
&'life0 self,
namespace: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<u64, DbCacheError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
SqlxInvalidationOutbox: 'async_trait,
fn reset_dead_letters<'life0, 'life1, 'async_trait>(
&'life0 self,
namespace: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<u64, DbCacheError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
SqlxInvalidationOutbox: 'async_trait,
Re-enable all dead-lettered rows for a namespace.
Source§fn status<'life0, 'life1, 'async_trait>(
&'life0 self,
namespace: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<OutboxStatus, DbCacheError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
SqlxInvalidationOutbox: 'async_trait,
fn status<'life0, 'life1, 'async_trait>(
&'life0 self,
namespace: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<OutboxStatus, DbCacheError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
SqlxInvalidationOutbox: 'async_trait,
Read-only status snapshot for operators.
Auto Trait Implementations§
impl !RefUnwindSafe for SqlxInvalidationOutbox
impl !UnwindSafe for SqlxInvalidationOutbox
impl Freeze for SqlxInvalidationOutbox
impl Send for SqlxInvalidationOutbox
impl Sync for SqlxInvalidationOutbox
impl Unpin for SqlxInvalidationOutbox
impl UnsafeUnpin for SqlxInvalidationOutbox
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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