Skip to content

Commit 76dc654

Browse files
KostassoidKonstantin Alexandrovar3s3ru
authored
feat(correlation): don't generate Event-Id if it's provided (#61)
* Don't generate EventID if it's provided * Fix typo * Update extension/correlation/eventstore.go Co-authored-by: Danilo Cianfrone <danilocianfr@gmail.com> Co-authored-by: Konstantin Alexandrov <kale@hellofresh.com> Co-authored-by: Danilo Cianfrone <danilocianfr@gmail.com>
1 parent d24a80e commit 76dc654

3 files changed

Lines changed: 17 additions & 4 deletions

File tree

CHANGELOG.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ project adheres to [Semantic Versioning](https://semver.org/).
1010
- An option to override Event appending logic in Postgres EventStore implementation.
1111

1212
### Changed
13-
- ...
13+
- Existing `Event-Id` value in Event Metadata does not get overwritten in correlation.EventStoreWrapper.
1414

1515
### Deprecated
1616
- ...

extension/correlation/eventstore.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,10 @@ func (esw EventStoreWrapper) Append(
5353
}
5454

5555
for i, event := range events {
56-
eventID := esw.Generator()
56+
eventID, ok := event.Metadata[EventIDKey].(string)
57+
if !ok {
58+
eventID = esw.Generator()
59+
}
5760

5861
event.Metadata = event.Metadata.
5962
With(EventIDKey, eventID).

extension/correlation/eventstore_test.go

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,12 +42,15 @@ func TestEventStoreWrapper(t *testing.T) {
4242
Name: "my-instance",
4343
}
4444

45+
metadataWithEventID := eventually.Metadata{}.With(correlation.EventIDKey, "abc123")
46+
4547
_, err := correlatedEventStore.Append(
4648
ctx,
4749
streamID,
4850
eventstore.VersionCheck(0),
4951
eventually.Event{Payload: internal.StringPayload("my-first-event")},
5052
eventually.Event{Payload: internal.StringPayload("my-second-event")},
53+
eventually.Event{Payload: internal.StringPayload("my-third-event"), Metadata: metadataWithEventID},
5154
)
5255

5356
if !assert.NoError(t, err) {
@@ -60,9 +63,9 @@ func TestEventStoreWrapper(t *testing.T) {
6063
})
6164

6265
assert.NoError(t, err)
63-
assert.Len(t, events, 2)
66+
assert.Len(t, events, 3)
6467

65-
firstEvent, secondEvent := events[0].Event, events[1].Event
68+
firstEvent, secondEvent, thirdEvent := events[0].Event, events[1].Event, events[2].Event
6669

6770
correlation1, ok := correlation.Message(firstEvent).CorrelationID()
6871
assert.True(t, ok)
@@ -86,4 +89,11 @@ func TestEventStoreWrapper(t *testing.T) {
8689
assert.Equal(t, causation1, causation2)
8790
assert.Equal(t, correlation1, causation1)
8891
assert.NotEqual(t, id1, id2)
92+
93+
assert.Equal(t, extractEventID(metadataWithEventID), extractEventID(thirdEvent.Metadata))
94+
}
95+
96+
func extractEventID(m eventually.Metadata) string {
97+
eventID, _ := m[correlation.EventIDKey].(string)
98+
return eventID
8999
}

0 commit comments

Comments
 (0)