An event.AnyTransformer is a type alias for event.Transformer[event.Any]. It is used to create generic transformers that can operate on events from any aggregate, rather than being tied to a specific event type. This is ideal for cross-cutting concerns like global logging, auditing, or telemetry that should apply to all events in the system.
To implement one, you must satisfy the TransformForWrite and TransformForRead methods using the event.Any interface.
type LoggingTransformer struct{}
func (t *LoggingTransformer) TransformForWrite(
_ context.Context,
events []event.Any,
) ([]event.Any, error) {
for _, event := range events {
fmt.Printf("[LOG] Writing event: %s\n", event.EventName())
}
return events, nil
}
func (t *LoggingTransformer) TransformForRead(
_ context.Context,
events []event.Any,
) ([]event.Any, error) {
for _, event := range events {
fmt.Printf("[LOG] Reading event: %s\n", event.EventName())
}
return events, nil
}