refactor(eventstore): rename EventPusher to Command, EventReader to Event, PushEvents to Push and FilterEvents to Filter (#2907)

This commit is contained in:
Silvan
2022-01-03 09:19:07 +01:00
committed by GitHub
parent 9a374f9c5c
commit 09be70949f
339 changed files with 1436 additions and 1346 deletions

View File

@@ -19,7 +19,7 @@ type Eventstore struct {
}
type eventTypeInterceptors struct {
eventMapper func(*repository.Event) (EventReader, error)
eventMapper func(*repository.Event) (Event, error)
}
func NewEventstore(repo repository.Repository) *Eventstore {
@@ -36,10 +36,10 @@ func (es *Eventstore) Health(ctx context.Context) error {
return es.repo.Health(ctx)
}
//PushEvents pushes the events in a single transaction
//Push pushes the events in a single transaction
// an event needs at least an aggregate
func (es *Eventstore) PushEvents(ctx context.Context, pushEvents ...EventPusher) ([]EventReader, error) {
events, constraints, err := eventsToRepository(pushEvents)
func (es *Eventstore) Push(ctx context.Context, cmds ...Command) ([]Event, error) {
events, constraints, err := commandsToRepository(cmds)
if err != nil {
return nil, err
}
@@ -57,37 +57,37 @@ func (es *Eventstore) PushEvents(ctx context.Context, pushEvents ...EventPusher)
return eventReaders, nil
}
func eventsToRepository(pushEvents []EventPusher) (events []*repository.Event, constraints []*repository.UniqueConstraint, err error) {
events = make([]*repository.Event, len(pushEvents))
for i, event := range pushEvents {
data, err := EventData(event)
func commandsToRepository(cmds []Command) (events []*repository.Event, constraints []*repository.UniqueConstraint, err error) {
events = make([]*repository.Event, len(cmds))
for i, cmd := range cmds {
data, err := EventData(cmd)
if err != nil {
return nil, nil, err
}
if event.Aggregate().ID == "" {
if cmd.Aggregate().ID == "" {
return nil, nil, errors.ThrowInvalidArgument(nil, "V2-Afdfe", "aggregate id must not be empty")
}
if event.Aggregate().Type == "" {
if cmd.Aggregate().Type == "" {
return nil, nil, errors.ThrowInvalidArgument(nil, "V2-Dfg32", "aggregate type must not be empty")
}
if event.Type() == "" {
if cmd.Type() == "" {
return nil, nil, errors.ThrowInvalidArgument(nil, "V2-Drg34", "event type must not be empty")
}
if event.Aggregate().Version == "" {
if cmd.Aggregate().Version == "" {
return nil, nil, errors.ThrowInvalidArgument(nil, "V2-Dgfg4", "aggregate version must not be empty")
}
events[i] = &repository.Event{
AggregateID: event.Aggregate().ID,
AggregateType: repository.AggregateType(event.Aggregate().Type),
ResourceOwner: event.Aggregate().ResourceOwner,
EditorService: event.EditorService(),
EditorUser: event.EditorUser(),
Type: repository.EventType(event.Type()),
Version: repository.Version(event.Aggregate().Version),
AggregateID: cmd.Aggregate().ID,
AggregateType: repository.AggregateType(cmd.Aggregate().Type),
ResourceOwner: cmd.Aggregate().ResourceOwner,
EditorService: cmd.EditorService(),
EditorUser: cmd.EditorUser(),
Type: repository.EventType(cmd.Type()),
Version: repository.Version(cmd.Aggregate().Version),
Data: data,
}
if len(event.UniqueConstraints()) > 0 {
constraints = append(constraints, uniqueConstraintsToRepository(event.UniqueConstraints())...)
if len(cmd.UniqueConstraints()) > 0 {
constraints = append(constraints, uniqueConstraintsToRepository(cmd.UniqueConstraints())...)
}
}
@@ -107,9 +107,9 @@ func uniqueConstraintsToRepository(constraints []*EventUniqueConstraint) (unique
return uniqueConstraints
}
//FilterEvents filters the stored events based on the searchQuery
//Filter filters the stored events based on the searchQuery
// and maps the events to the defined event structs
func (es *Eventstore) FilterEvents(ctx context.Context, queryFactory *SearchQueryBuilder) ([]EventReader, error) {
func (es *Eventstore) Filter(ctx context.Context, queryFactory *SearchQueryBuilder) ([]Event, error) {
query, err := queryFactory.build()
if err != nil {
return nil, err
@@ -122,8 +122,8 @@ func (es *Eventstore) FilterEvents(ctx context.Context, queryFactory *SearchQuer
return es.mapEvents(events)
}
func (es *Eventstore) mapEvents(events []*repository.Event) (mappedEvents []EventReader, err error) {
mappedEvents = make([]EventReader, len(events))
func (es *Eventstore) mapEvents(events []*repository.Event) (mappedEvents []Event, err error) {
mappedEvents = make([]Event, len(events))
es.interceptorMutex.Lock()
defer es.interceptorMutex.Unlock()
@@ -150,12 +150,12 @@ type reducer interface {
// it only appends the newly added events
Reduce() error
//AppendEvents appends the passed events to an internal list of events
AppendEvents(...EventReader)
AppendEvents(...Event)
}
//FilterToReducer filters the events based on the search query, appends all events to the reducer and calls it's reduce function
func (es *Eventstore) FilterToReducer(ctx context.Context, searchQuery *SearchQueryBuilder, r reducer) error {
events, err := es.FilterEvents(ctx, searchQuery)
events, err := es.Filter(ctx, searchQuery)
if err != nil {
return err
}
@@ -183,7 +183,7 @@ type queryReducer interface {
//FilterToQueryReducer filters the events based on the search query of the query function,
// appends all events to the reducer and calls it's reduce function
func (es *Eventstore) FilterToQueryReducer(ctx context.Context, r queryReducer) error {
events, err := es.FilterEvents(ctx, r.Query())
events, err := es.Filter(ctx, r.Query())
if err != nil {
return err
}
@@ -193,7 +193,7 @@ func (es *Eventstore) FilterToQueryReducer(ctx context.Context, r queryReducer)
}
//RegisterFilterEventMapper registers a function for mapping an eventstore event to an event
func (es *Eventstore) RegisterFilterEventMapper(eventType EventType, mapper func(*repository.Event) (EventReader, error)) *Eventstore {
func (es *Eventstore) RegisterFilterEventMapper(eventType EventType, mapper func(*repository.Event) (Event, error)) *Eventstore {
if mapper == nil || eventType == "" {
return es
}
@@ -207,7 +207,7 @@ func (es *Eventstore) RegisterFilterEventMapper(eventType EventType, mapper func
return es
}
func EventData(event EventPusher) ([]byte, error) {
func EventData(event Command) ([]byte, error) {
switch data := event.Data().(type) {
case nil:
return nil, nil