AggregateStore<TData extends Object, TEvent extends Object, TValue extends Object, TId extends AggregateId, TState extends AggregateState<TValue>, TAggregate extends Aggregate<TEvent, TValue, TId, TState>> constructor

  1. @mustCallSuper
AggregateStore<TData extends Object, TEvent extends Object, TValue extends Object, TId extends AggregateId, TState extends AggregateState<TValue>, TAggregate extends Aggregate<TEvent, TValue, TId, TState>>(
  1. StreamEventStore events, {
  2. EventSerializer<TEvent>? serializer,
  3. AggregateCreator<TEvent, TValue, TId, TState, TAggregate>? onNew,
  4. AggregateStateStorage<TValue, TState>? states,
})

Default constructor.

If onNew is not given, AggregateCreator must be registered with AggregateTypes.define, or method newInstance must be overridden.

If states is not given, AggregateStateCreator must be registered with AggregateStateTypes.define, or method newStateInstance must be overridden.

Implementation

@mustCallSuper
AggregateStore(
  StreamEventStore events, {
  EventSerializer<TEvent>? serializer,
  AggregateCreator<TEvent, TValue, TId, TState, TAggregate>? onNew,
  AggregateStateStorage<TValue, TState>? states,
})  : _onNew = onNew,
      _events = events,
      _states = states,
      _serializer = serializer ?? DefaultEventSerializer<TData, TEvent>() {
  //
  // Sanity checks
  //
  if (_onNew == null && !AggregateTypes.containsType(TAggregate)) {
    throw UnimplementedError('newInstance is not implemented');
  }
  if (_states == null && !AggregateStateTypes.containsType(TState)) {
    throw UnimplementedError('newStateInstance is not implemented');
  }
}