pub struct Event {
pub event_id: Uuid,
pub partition_key: Uuid,
pub partition_id: u16,
pub transaction_id: Uuid,
pub partition_sequence: u64,
pub stream_version: u64,
pub timestamp: SystemTime,
pub stream_id: String,
pub event_name: String,
pub metadata: Vec<u8>,
pub payload: Vec<u8>,
}Expand description
Represents a single event record in the event store.
Fields§
§event_id: UuidGlobally unique identifier for this specific event. Generated once when the event is created and never changes.
partition_key: UuidDetermines which partition this event belongs to.
This is typically a domain-significant identifier (like customer ID, tenant ID) that groups related events together. All events for the same stream must share the same partition key.
partition_id: u16The numeric partition identifier (0-1023) derived from the partition_key.
Events with the same partition_id have a guaranteed total ordering defined by their partition_sequence, regardless of which stream they belong to.
transaction_id: UuidIdentifier for multi-event transactions.
When multiple events are saved as part of a single transaction, they share this identifier. For events not part of a transaction, this may be a null UUID.
partition_sequence: u64The monotonic, gapless sequence number within the partition.
This defines the total ordering of events within a partition. Each new event in a partition receives a sequence number exactly one higher than the previous event.
stream_version: u64The version number of the entity/aggregate after this event is applied.
This is a monotonic, gapless counter specific to the stream. It starts at 0 and increments by 1 for each event in the stream. Used for optimistic concurrency control and to determine the current state version of an entity.
timestamp: SystemTimeUnix timestamp (in milliseconds) when the event was created.
Useful for time-based queries and analysis, though not used for event ordering.
stream_id: StringIdentifier for the stream (entity/aggregate) this event belongs to.
Typically corresponds to a domain entity ID, like “account-123” or “order-456”. All events for the same entity share the same stream_id.
event_name: StringName of the event type, used for deserialization and event handling.
Examples: “AccountCreated”, “OrderShipped”, “PaymentRefunded”. Should be meaningful in the domain context.
metadata: Vec<u8>Additional system or application metadata about the event.
May include information like user ID, correlation IDs, causation IDs, or other contextual data not part of the event payload itself.
payload: Vec<u8>The actual event data serialized as bytes.
Contains the domain-specific information that constitutes the event. Must be deserializable based on the event_name.
Implementations§
Source§impl Event
impl Event
Sourcepub fn sequence_or_version_for_stream(&self) -> u64
pub fn sequence_or_version_for_stream(&self) -> u64
Get the sequence/version number to use for acknowledgment.
For stream subscriptions, this returns the stream_version.
For partition subscriptions, this returns the partition_sequence.
Use this value with acknowledge_events() to acknowledge this event.
Sourcepub fn sequence_for_partition(&self) -> u64
pub fn sequence_for_partition(&self) -> u64
Get the sequence number to use for partition subscription acknowledgment.
Use this value with acknowledge_events() when acknowledging
events from a partition subscription.
Sourcepub fn version_for_stream(&self) -> u64
pub fn version_for_stream(&self) -> u64
Get the version number to use for stream subscription acknowledgment.
Use this value with acknowledge_events() when acknowledging
events from a stream subscription.
Trait Implementations§
Source§impl<'de> Deserialize<'de> for Event
impl<'de> Deserialize<'de> for Event
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl FromRedisValue for Event
impl FromRedisValue for Event
Source§fn from_redis_value(value: &Value) -> RedisResult<Self>
fn from_redis_value(value: &Value) -> RedisResult<Self>
Value this attempts to convert it into the given
destination type. If that fails because it’s not compatible an
appropriate error is generated.Source§fn from_owned_redis_value(v: Value) -> Result<Self, RedisError>
fn from_owned_redis_value(v: Value) -> Result<Self, RedisError>
Value this attempts to convert it into the given
destination type. If that fails because it’s not compatible an
appropriate error is generated.Source§fn from_redis_values(items: &[Value]) -> Result<Vec<Self>, RedisError>
fn from_redis_values(items: &[Value]) -> Result<Vec<Self>, RedisError>
from_redis_value but constructs a vector of objects
from another vector of values. This primarily exists internally
to customize the behavior for vectors of tuples.Source§fn from_owned_redis_values(items: Vec<Value>) -> Result<Vec<Self>, RedisError>
fn from_owned_redis_values(items: Vec<Value>) -> Result<Vec<Self>, RedisError>
from_redis_values, but takes a Vec<Value> instead
of a &[Value].Source§fn from_each_owned_redis_values(
items: Vec<Value>,
) -> Vec<Result<Self, RedisError>>
fn from_each_owned_redis_values( items: Vec<Value>, ) -> Vec<Result<Self, RedisError>>
from_owned_redis_values, but returns a result for each
conversion to make handling them case-by-case possible.