diff --git a/grade/internal/domain/seedwork/aggregate/event_meta.go b/grade/internal/domain/seedwork/aggregate/event_meta.go index e056140c..00faba7f 100644 --- a/grade/internal/domain/seedwork/aggregate/event_meta.go +++ b/grade/internal/domain/seedwork/aggregate/event_meta.go @@ -64,6 +64,7 @@ func (m EventMeta) Reason() string { func (m EventMeta) Spawn(eventId uuid.Uuid) EventMeta { n := m + n.causationId = n.eventId n.eventId = eventId return n } diff --git a/grade/internal/infrastructure/seedwork/repository/event_store.go b/grade/internal/infrastructure/seedwork/repository/event_store.go index 7ffebc6b..99836429 100644 --- a/grade/internal/infrastructure/seedwork/repository/event_store.go +++ b/grade/internal/infrastructure/seedwork/repository/event_store.go @@ -2,6 +2,7 @@ package repository import ( "github.com/emacsway/grade/grade/internal/domain/seedwork/aggregate" + "github.com/emacsway/grade/grade/internal/domain/seedwork/uuid" "github.com/emacsway/grade/grade/internal/infrastructure/seedwork/session" ) @@ -33,7 +34,10 @@ func (r *EventStore) Save( eventMeta aggregate.EventMeta, ) error { pendingEvents := agg.PendingDomainEvents() + agg.ClearPendingDomainEvents() + for _, iEvent := range pendingEvents { + eventMeta = eventMeta.Spawn(uuid.NewUuid()) iEvent.SetEventMeta(eventMeta) q := r.eventQuery(iEvent) q.SetStreamType(r.streamType) @@ -42,6 +46,5 @@ func (r *EventStore) Save( return err } } - agg.ClearPendingDomainEvents() return nil }