#[subscription_all]Expand description
Creates a subscription handler that processes all events of an aggregate type.
This macro is similar to [subscription] but handles all events from an aggregate
without requiring the event data to be deserialized. The event is wrapped in
RawEvent which provides access to event metadata
(name, id, timestamp, etc.) without deserializing the payload.
§Function Signature
The function must have this signature:
ⓘ
async fn handler_name<E: Executor>(
context: &Context<'_, E>,
event: RawEvent<AggregateType>,
) -> anyhow::Result<()>§Generated Code
For a function on_any_account_event, the macro generates:
OnAnyAccountEventHandlerstructon_any_account_event()constructor functionsubscription::Handler<E>trait implementation withevent_name()returning"all"
§Example
ⓘ
use evento::{Executor, metadata::RawEvent, subscription::Context};
#[evento::subscription_all]
async fn on_any_account_event<E: Executor>(
context: &Context<'_, E>,
event: RawEvent<BankAccount>,
) -> anyhow::Result<()> {
// Access event metadata without deserializing
println!("Event: {} on {}", event.name, event.aggregator_id);
println!("Version: {}", event.version);
println!("Timestamp: {}", event.timestamp);
// Useful for logging, auditing, or forwarding events
Ok(())
}
// Register with subscription - handles all BankAccount events
let subscription = SubscriptionBuilder::<Sqlite>::new("account-auditor")
.handler(on_any_account_event())
.start(&executor)
.await?;