30 lines
648 B
Go
30 lines
648 B
Go
package serverevents
|
|
|
|
import "encoding/json"
|
|
|
|
func CreateMetaDataFilter[T any](c IContext, metaDataSelector func(IContext) T, vgl func(a T, b T) bool) func(context IContext) bool {
|
|
return func(context IContext) bool {
|
|
metaA := metaDataSelector(c)
|
|
metaB := metaDataSelector(context)
|
|
return vgl(metaA, metaB)
|
|
}
|
|
}
|
|
|
|
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
|
|
str, err := json.Marshal(data)
|
|
if err != nil {
|
|
return v, false
|
|
}
|
|
err = json.Unmarshal(str, &v)
|
|
if err != nil {
|
|
return v, false
|
|
}
|
|
return v, true
|
|
}
|