ForFarm/backend/internal/domain/event.go

29 lines
462 B
Go

package domain
import (
"context"
"time"
)
type Event struct {
ID string
Type string
Source string
Timestamp time.Time
Payload interface{}
AggregateID string
}
type EventPublisher interface {
Publish(ctx context.Context, event Event) error
}
type EventSubscriber interface {
Subscribe(ctx context.Context, eventType string, handler func(Event) error) error
}
type EventBus interface {
EventPublisher
EventSubscriber
}