add event data

This commit is contained in:
admin 2025-07-06 21:44:53 +02:00
parent e808b7ad3c
commit 09136b0ca6
5 changed files with 16 additions and 9 deletions

View File

@ -9,11 +9,15 @@ func CreateMetaDataFilter[T any](c IContext, metaDataSelector func(IContext) T,
}
func MetadataAs[T any](context IContext, key string) (T, bool) {
tmp, _ := context.Get(key)
return ValueAs[T](tmp)
}
func ValueAs[T any](data any) (T, bool) {
var v T
tmp, ok := context.Get(key)
if tmp == nil {
if data == nil {
return v, false
}
res, ok := tmp.(T)
res, ok := data.(T)
return res, ok
}

View File

@ -2,5 +2,5 @@ package serverevents
type IEventHandler interface {
CanExecute(IContext) bool
Handle(IContext)
Handle(IContext, any)
}

View File

@ -25,8 +25,11 @@ func (handler greeterEventHandler) CanExecute(context serverevents.IContext) boo
return ok
}
func (handler greeterEventHandler) Handle(context serverevents.IContext) {
userName, _ := serverevents.MetadataAs[string](context, "UserName")
func (handler greeterEventHandler) Handle(context serverevents.IContext, data any) {
userName, ok := serverevents.ValueAs[string](data)
if !ok {
userName, _ = serverevents.MetadataAs[string](context, "UserName")
}
context.Dispatch("greet", greeting{
Message: fmt.Sprintf("Hello, %s", userName),
}, withSameUserName(context))

View File

@ -10,10 +10,10 @@ func NewPingEventHandler() serverevents.IEventHandler {
return &pingEventHandler{}
}
func (p pingEventHandler) CanExecute(context serverevents.IContext) bool {
func (p pingEventHandler) CanExecute(_ serverevents.IContext) bool {
return true
}
func (p pingEventHandler) Handle(context serverevents.IContext) {
func (p pingEventHandler) Handle(context serverevents.IContext, _ any) {
context.Dispatch("pong", nil, context.IsCaller)
}

View File

@ -81,7 +81,7 @@ func (middleware *serverEventsMiddleware) handleEventStream(w http.ResponseWrite
println(fmt.Sprintf("no Handler found for Event %s", ev.Type))
} else {
if handler.CanExecute(context) {
handler.Handle(context)
handler.Handle(context, ev.Data)
}
}