persistEvents method
Persist multiple events atomically All events succeed or all fail together
Implementation
@protected
Future<void> persistEvents(List<Event> events) async {
if (_isRecovering) {
throw StateError('Cannot persist events during recovery');
}
if (events.isEmpty) return;
try {
// Persist all events atomically
await _eventStore.persistEvents(_persistenceId, events, _sequenceNumber);
// Update sequence number
_sequenceNumber += events.length;
// Apply all events to update state
for (final event in events) {
eventHandler(event);
}
// Call persistence lifecycle hook
await onPersistBatch(events);
} catch (e) {
// Handle persistence failures
await onPersistBatchFailure(events, e);
rethrow;
}
}