persistEvents method

  1. @protected
Future<void> persistEvents(
  1. List<Event> events
)
inherited

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;
  }
}