pub struct Evento { /* private fields */ }Expand description
Type-erased wrapper around any Executor implementation.
Evento wraps an executor in Arc<Box<dyn Executor>> for dynamic dispatch.
This allows storing different executor implementations in the same collection.
§Example
ⓘ
let sql_executor: Sql<sqlx::Sqlite> = pool.into();
let evento = Evento::new(sql_executor);
// Use like any executor
evento.write(events).await?;Implementations§
Source§impl Evento
impl Evento
Sourcepub fn default_routing_key(self, key: impl Into<String>) -> Self
pub fn default_routing_key(self, key: impl Into<String>) -> Self
Sets a default routing key applied to writes and inherited by subscriptions built from this executor.
Per-event/per-aggregate routing keys still take precedence on writes.
Subscriptions inherit this key only when the user has not called
.routing_key() or .all().
Trait Implementations§
Source§impl Executor for Evento
impl Executor for Evento
Source§fn default_routing_key(&self) -> Option<&str>
fn default_routing_key(&self) -> Option<&str>
Default routing key applied to writes and inherited by subscriptions. Read more
Source§fn write<'life0, 'async_trait>(
&'life0 self,
events: Vec<Event>,
) -> Pin<Box<dyn Future<Output = Result<(), WriteError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn write<'life0, 'async_trait>(
&'life0 self,
events: Vec<Event>,
) -> Pin<Box<dyn Future<Output = Result<(), WriteError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Persists events atomically. Read more
Source§fn read<'life0, 'async_trait>(
&'life0 self,
aggregators: Option<Vec<EventFilter>>,
routing_key: Option<RoutingKey>,
args: Args,
) -> Pin<Box<dyn Future<Output = Result<ReadResult<Event>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn read<'life0, 'async_trait>(
&'life0 self,
aggregators: Option<Vec<EventFilter>>,
routing_key: Option<RoutingKey>,
args: Args,
) -> Pin<Box<dyn Future<Output = Result<ReadResult<Event>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Queries events with filtering and pagination.
Source§fn latest_timestamp<'life0, 'async_trait>(
&'life0 self,
aggregators: Option<Vec<EventFilter>>,
routing_key: Option<RoutingKey>,
) -> Pin<Box<dyn Future<Output = Result<u64>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn latest_timestamp<'life0, 'async_trait>(
&'life0 self,
aggregators: Option<Vec<EventFilter>>,
routing_key: Option<RoutingKey>,
) -> Pin<Box<dyn Future<Output = Result<u64>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Returns the timestamp of the most recent event matching the filter. Read more
Source§fn get_subscriber_cursor<'life0, 'async_trait>(
&'life0 self,
key: String,
) -> Pin<Box<dyn Future<Output = Result<Option<Value>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_subscriber_cursor<'life0, 'async_trait>(
&'life0 self,
key: String,
) -> Pin<Box<dyn Future<Output = Result<Option<Value>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Gets the current cursor position for a subscription.
Source§fn is_subscriber_running<'life0, 'async_trait>(
&'life0 self,
key: String,
worker_id: Ulid,
) -> Pin<Box<dyn Future<Output = Result<bool>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn is_subscriber_running<'life0, 'async_trait>(
&'life0 self,
key: String,
worker_id: Ulid,
) -> Pin<Box<dyn Future<Output = Result<bool>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Checks if a subscription is running with the given worker ID.
Source§fn upsert_subscriber<'life0, 'async_trait>(
&'life0 self,
key: String,
worker_id: Ulid,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn upsert_subscriber<'life0, 'async_trait>(
&'life0 self,
key: String,
worker_id: Ulid,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Creates or updates a subscription record.
Source§fn acknowledge<'life0, 'async_trait>(
&'life0 self,
key: String,
cursor: Value,
lag: u64,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn acknowledge<'life0, 'async_trait>(
&'life0 self,
key: String,
cursor: Value,
lag: u64,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Updates subscription cursor after processing events.
Source§fn get_snapshot<'life0, 'async_trait>(
&'life0 self,
aggregate_type: String,
aggregate_revision: String,
id: String,
) -> Pin<Box<dyn Future<Output = Result<Option<(Vec<u8>, Value)>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_snapshot<'life0, 'async_trait>(
&'life0 self,
aggregate_type: String,
aggregate_revision: String,
id: String,
) -> Pin<Box<dyn Future<Output = Result<Option<(Vec<u8>, Value)>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Retrieves a stored snapshot for an aggregate. Read more
Source§fn save_snapshot<'life0, 'async_trait>(
&'life0 self,
aggregate_type: String,
aggregate_revision: String,
id: String,
data: Vec<u8>,
cursor: Value,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn save_snapshot<'life0, 'async_trait>(
&'life0 self,
aggregate_type: String,
aggregate_revision: String,
id: String,
data: Vec<u8>,
cursor: Value,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Stores a snapshot for an aggregate. Read more
Auto Trait Implementations§
impl !RefUnwindSafe for Evento
impl !UnwindSafe for Evento
impl Freeze for Evento
impl Send for Evento
impl Sync for Evento
impl Unpin for Evento
impl UnsafeUnpin for Evento
Blanket Implementations§
Source§impl<E> AggregateExt<E> for Ewhere
E: Executor,
impl<E> AggregateExt<E> for Ewhere
E: Executor,
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