pub enum AppendOutcome {
Appended {
version: StreamVersion,
records: Vec<AuditRecord>,
first_position: GlobalPosition,
},
Conflict {
expected: StreamVersion,
actual: StreamVersion,
},
}Expand description
What an event store did with a batch of facts.
A conflict is an outcome rather than an error: another caller got there first, nothing landed, and the right response is to reload and decide again — not to give up.
Variants§
Appended
Every fact was sealed and landed. version is the stream’s new
head, records the sealed facts in order, and first_position
where the first of them sits in the global order; the rest
follow it contiguously.
Conflict
The stream was not at the version the caller decided against. Nothing was written.
Implementations§
Source§impl AppendOutcome
impl AppendOutcome
pub fn is_conflict(&self) -> bool
Sourcepub fn records(&self) -> &[AuditRecord]
pub fn records(&self) -> &[AuditRecord]
The records that landed — none for a conflict.
Sourcepub fn appended_version(&self) -> Option<StreamVersion>
pub fn appended_version(&self) -> Option<StreamVersion>
The stream’s head after the append, if it landed.
Sourcepub fn positioned(&self) -> Vec<PositionedRecord>
pub fn positioned(&self) -> Vec<PositionedRecord>
The records that landed, each with its place in the global order — none for a conflict.
Derived rather than stored: the positions of one append are
contiguous from first_position by contract, so keeping one
per record would be the same fact written n times and n
chances for an adapter to write it differently. Whoever needs
the pair — a projection being told what was just sealed, a
consumer placing a cursor — gets it the same way here.