///|
/// Returns events carrying a given correlation identifier.
pub fn[P] events_by_correlation(
journal : Journal[P],
correlation_id : String,
) -> Array[JournalEvent[P]] {
let result : Array[JournalEvent[P]] = []
for event in journal.events() {
if event.correlation_id == correlation_id {
result.push(event)
}
}
result
}
///|
/// Returns events with an exact application event kind.
pub fn[P] events_by_kind(
journal : Journal[P],
kind : String,
) -> Array[JournalEvent[P]] {
let result : Array[JournalEvent[P]] = []
for event in journal.events() {
if event.kind == kind {
result.push(event)
}
}
result
}
///|
/// Returns events in an inclusive sequence range.
///
/// This is an investigation view, not a replayable journal. Original sequence
/// and hash evidence remain attached to every returned event.
pub fn[P] events_in_range(
journal : Journal[P],
first_sequence : Int,
last_sequence : Int,
) -> Array[JournalEvent[P]] {
let result : Array[JournalEvent[P]] = []
if first_sequence > last_sequence {
return result
}
for event in journal.events() {
if event.sequence >= first_sequence && event.sequence <= last_sequence {
result.push(event)
}
}
result
}