Skip to content

Commit ea26cf0

Browse files
authored
Expose the new raweventid CloudEvent field (#73)
1 parent 9a29c8e commit ea26cf0

9 files changed

Lines changed: 102 additions & 7 deletions

File tree

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ require (
66
github.com/99designs/gqlgen v0.17.86
77
github.com/ClickHouse/clickhouse-go/v2 v2.43.0
88
github.com/DIMO-Network/clickhouse-infra v0.0.7
9-
github.com/DIMO-Network/cloudevent v0.2.5
9+
github.com/DIMO-Network/cloudevent v0.2.7
1010
github.com/DIMO-Network/server-garage v0.0.7
1111
github.com/DIMO-Network/shared v1.1.7
1212
github.com/DIMO-Network/token-exchange-api v0.4.0

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ github.com/DATA-DOG/go-sqlmock v1.5.2 h1:OcvFkGmslmlZibjAjaHm3L//6LiuBgolP7Oputl
1616
github.com/DATA-DOG/go-sqlmock v1.5.2/go.mod h1:88MAG/4G7SMwSE3CeA0ZKzrT5CiOU3OJ+JlNzwDqpNU=
1717
github.com/DIMO-Network/clickhouse-infra v0.0.7 h1:TAsjkFFKu3D5Xg6dwBcRBryjCVSlXsNjVbTwJ4UDlTg=
1818
github.com/DIMO-Network/clickhouse-infra v0.0.7/go.mod h1:XS80lhSJNWBWGgZ+m4j7++zFj1wAXfmtV2gJfhGlabQ=
19-
github.com/DIMO-Network/cloudevent v0.2.5 h1:3s6ZKtBXHYy0ujMYBdOBF9uJAc5C+EKEF7/SToW2cJA=
20-
github.com/DIMO-Network/cloudevent v0.2.5/go.mod h1:zFG6pf7ejwC0y3//mHpISDHR/blsSz8Lew2c4ebc8Lw=
19+
github.com/DIMO-Network/cloudevent v0.2.7 h1:/cgFhUcWcliZYrmITkB8oIZb+zDhZvYNxWVGS2D3894=
20+
github.com/DIMO-Network/cloudevent v0.2.7/go.mod h1:I/9NcpMozV5Fw194WimhbkAsJtKVZf5UKYJ9hgc8Cdg=
2121
github.com/DIMO-Network/server-garage v0.0.7 h1:kOBVyOtIbxa1x9pAf1epABTb9l/U3khf0PwUaHeHiKs=
2222
github.com/DIMO-Network/server-garage v0.0.7/go.mod h1:7DFor8MMJ8fLv9EB16Z5LrN+ftW3qeIk+swpkT7F2cU=
2323
github.com/DIMO-Network/shared v1.1.7 h1:5Ex8bZ6BpOjcLj4u7n5Kih1Ho6b9BVJsKpKn4iU2EaM=

internal/graph/convert_test.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ func TestIndexToModel(t *testing.T) {
2222
Type: "dimo.status",
2323
DataContentType: "application/json",
2424
DataVersion: "r/v0/s",
25+
RawEventID: "raw-event-123",
2526
},
2627
Data: eventrepo.ObjectInfo{Key: "s3://bucket/key"},
2728
}
@@ -33,6 +34,7 @@ func TestIndexToModel(t *testing.T) {
3334
assert.Equal(t, "dimo.status", out.Header.Type)
3435
assert.Equal(t, "application/json", out.Header.DataContentType)
3536
assert.Equal(t, "r/v0/s", out.Header.DataVersion)
37+
assert.Equal(t, "raw-event-123", out.Header.RawEventID)
3638
assert.Equal(t, "s3://bucket/key", out.IndexKey)
3739
})
3840

@@ -51,5 +53,6 @@ func TestIndexToModel(t *testing.T) {
5153
assert.Empty(t, out.Header.DataContentType)
5254
assert.Empty(t, out.Header.DataVersion)
5355
assert.Empty(t, out.Header.Signature)
56+
assert.Empty(t, out.Header.RawEventID)
5457
})
5558
}

internal/graph/generated.go

Lines changed: 43 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/eventrepo/event_repo_test.go

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -399,6 +399,7 @@ func TestGetEventWithAllHeaderFields(t *testing.T) {
399399
DataVersion: dataType,
400400
SpecVersion: cloudevent.SpecVersion,
401401
Signature: "0x1234567890",
402+
RawEventID: "raw-event-id-123",
402403
Tags: []string{"tests.tag1", "tests.tag2"},
403404
Extras: map[string]any{
404405
"extraField": "extra-value",
@@ -458,6 +459,7 @@ func TestGetEventWithAllHeaderFields(t *testing.T) {
458459
assert.Equal(t, fullHeaderEvent.DataVersion, retrievedEvent.DataVersion, "DataVersion mismatch")
459460
assert.Equal(t, cloudevent.SpecVersion, retrievedEvent.SpecVersion, "SpecVersion mismatch")
460461
assert.Equal(t, fullHeaderEvent.Signature, retrievedEvent.Signature, "Signature mismatch")
462+
assert.Equal(t, fullHeaderEvent.RawEventID, retrievedEvent.RawEventID, "RawEventID mismatch")
461463
assert.Equal(t, fullHeaderEvent.Tags, retrievedEvent.Tags, "Tags mismatch")
462464

463465
// Verify extras
@@ -492,6 +494,37 @@ func TestGetEventWithAllHeaderFields(t *testing.T) {
492494
assert.Equal(t, "0x09876543210", retrievedEvent.Signature, "Signature field not set correctly")
493495
assert.Nil(t, retrievedEvent.Extras["signature"], "Signature should not be in extras")
494496
})
497+
498+
t.Run("retrieve event with raw event id that is originally in extras", func(t *testing.T) {
499+
fullHeaderEvent3 := fullHeaderEvent
500+
fullHeaderEvent3.Subject = eventDID2.String()
501+
fullHeaderEvent3.RawEventID = ""
502+
fullHeaderEvent3.Extras = map[string]any{
503+
"raweventid": "raw-event-id-from-extras",
504+
}
505+
indexKey3 := insertTestData(t, ctx, conn, &fullHeaderEvent3)
506+
507+
mockS3Client.EXPECT().GetObject(gomock.Any(), gomock.Any(), gomock.Any()).DoAndReturn(
508+
func(ctx context.Context, params *s3.GetObjectInput, optFns ...func(*s3.Options)) (*s3.GetObjectOutput, error) {
509+
require.Equal(t, indexKey3, *params.Key)
510+
return &s3.GetObjectOutput{
511+
Body: io.NopCloser(bytes.NewReader(eventDataEnvelope)),
512+
ContentLength: ref(int64(len(eventDataEnvelope))),
513+
}, nil
514+
},
515+
)
516+
opts := &grpc.SearchOptions{
517+
DataVersion: &wrapperspb.StringValue{Value: dataType},
518+
Subject: &wrapperspb.StringValue{Value: eventDID2.String()},
519+
}
520+
521+
retrievedEvent, err := indexService.GetLatestCloudEvent(ctx, "test-bucket", opts)
522+
require.NoError(t, err)
523+
524+
assert.Equal(t, fullHeaderEvent3.ID, retrievedEvent.ID, "ID mismatch")
525+
assert.Equal(t, "raw-event-id-from-extras", retrievedEvent.RawEventID, "RawEventID field not set correctly")
526+
assert.Nil(t, retrievedEvent.Extras["raweventid"], "RawEventID should not be in extras")
527+
})
495528
}
496529

497530
func ref[T any](x T) *T {

pkg/grpc/cloudevent.pb.go

Lines changed: 14 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/grpc/cloudevent.proto

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,5 +61,7 @@ message CloudEventHeader {
6161

6262
// Signature hold the signature of the a cloudevent's data field.
6363
string signature = 13;
64-
}
6564

65+
// RawEventID links a parsed event to the backing raw event when present.
66+
string raw_event_id = 14;
67+
}

pkg/grpc/common.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ func (c *CloudEventHeader) AsCloudEventHeader() cloudevent.CloudEventHeader {
5353
DataVersion: c.GetDataVersion(),
5454
Extras: extras,
5555
Signature: c.GetSignature(),
56+
RawEventID: c.GetRawEventId(),
5657
Tags: TagsOrEmpty(c.GetTags()),
5758
}
5859
}
@@ -84,6 +85,7 @@ func CloudEventHeaderToProto(event *cloudevent.CloudEventHeader) *CloudEventHead
8485
DataVersion: event.DataVersion,
8586
Extras: extras,
8687
Signature: event.Signature,
88+
RawEventId: event.RawEventID,
8789
Tags: TagsOrEmpty(event.Tags),
8890
}
8991
}

schema/base.graphqls

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@ type CloudEventHeader {
8181
dataversion: String
8282
producer: String!
8383
signature: String
84+
raweventid: String
8485
tags: [String!]!
8586
}
8687

0 commit comments

Comments
 (0)