From 7da7638ecd378d935f3d8c3dc2bd94fddc3b2a7e Mon Sep 17 00:00:00 2001 From: mamor87 Date: Wed, 17 Sep 2025 07:55:38 +0200 Subject: [PATCH] add helper to read data --- README.md | 8 +++----- helper.go | 7 +++++++ test/handler_test.go | 6 ++---- 3 files changed, 12 insertions(+), 9 deletions(-) create mode 100644 helper.go diff --git a/README.md b/README.md index 9f85c0e..acd77fe 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,6 @@ package main import ( "fmt" - "sync" "git.apihub24.de/admin/events" ) @@ -55,15 +54,14 @@ func main() { nameSubscription := handler.Subscribe(NameEventType, func(event events.IEvent) { // read the Name Event Data - var data NameEventData - _ = event.Data(&data) + data, _ := events.ParseEventData[NameEventData](event) // Publish the Greet Event _ = handler.Publish(events.NewEvent(GreetEventType, GreetEventData{Greeting: fmt.Sprintf("Hello, %s", data.Name)})) }) greetSubscription := handler.Subscribe(GreetEventType, func(event events.IEvent) { - var data GreetEventData - _ = event.Data(&data) + data, _ := events.ParseEventData[GreetEventData](event) + println(fmt.Sprintf("%v", data)) }) // publish the Name Event _ = handler.Publish(nameEvent) diff --git a/helper.go b/helper.go new file mode 100644 index 0000000..e945dde --- /dev/null +++ b/helper.go @@ -0,0 +1,7 @@ +package events + +func ParseEventData[T any](event IEvent) (T, error) { + var d T + err := event.Data(&d) + return d, err +} diff --git a/test/handler_test.go b/test/handler_test.go index 28f8bff..e1bfa04 100644 --- a/test/handler_test.go +++ b/test/handler_test.go @@ -29,8 +29,7 @@ func Test_EventHandler_ShouldHandleSubscriptions(t *testing.T) { wg.Add(2) handler.Subscribe(NameEventType, func(event events.IEvent) { - var data NameEventData - err := event.Data(&data) + data, err := events.ParseEventData[NameEventData](event) if err != nil { t.Error(err) } @@ -42,8 +41,7 @@ func Test_EventHandler_ShouldHandleSubscriptions(t *testing.T) { }) handler.Subscribe(GreetEventType, func(event events.IEvent) { - var data GreetEventData - err := event.Data(&data) + data, err := events.ParseEventData[GreetEventData](event) if err != nil { t.Error(err) }