Documentation
¶
Overview ¶
Package signals provides a synchronous and asynchronous event bus for the Nucleus framework. It implements a pattern similar to Django signals, allowing decoupled components to react to model lifecycle events (pre/post save, delete, etc.).
Index ¶
- Variables
- type Bus
- type Event
- type Handler
- type RedisRelay
- func (r *RedisRelay) Channel(signal Signal) string
- func (r *RedisRelay) Close() error
- func (r *RedisRelay) ForwardToBus(ctx context.Context, signal Signal, bus *Bus) error
- func (r *RedisRelay) Publish(ctx context.Context, event Event) error
- func (r *RedisRelay) Subscribe(ctx context.Context, signal Signal, handler Handler) error
- type RedisRelayConfig
- type Signal
Constants ¶
This section is empty.
Variables ¶
var ( ErrRedisURLRequired = errors.New("signals: redis url is required") ErrSignalRequired = errors.New("signals: signal is required") ErrNilHandler = errors.New("signals: handler is required") ErrNilBus = errors.New("signals: bus is nil") ErrNilRelay = errors.New("signals: relay is nil") )
Functions ¶
This section is empty.
Types ¶
type Bus ¶
type Bus struct {
// contains filtered or unexported fields
}
Bus manages signal handlers and dispatches events.
func (*Bus) Clear ¶
Clear removes all handlers for the given signal, or all handlers if no signal is specified. Useful for testing.
func (*Bus) Emit ¶
Emit dispatches an event synchronously. All registered handlers for the event's signal are called in order. If any handler returns an error, execution stops and the error is returned.
type Handler ¶
Handler is a function that processes an event. Returning an error from a synchronous handler aborts the operation that triggered the signal.
type RedisRelay ¶
type RedisRelay struct {
// contains filtered or unexported fields
}
func NewRedisRelay ¶
func NewRedisRelay(cfg RedisRelayConfig, logger *slog.Logger) (*RedisRelay, error)
func (*RedisRelay) Channel ¶
func (r *RedisRelay) Channel(signal Signal) string
func (*RedisRelay) Close ¶
func (r *RedisRelay) Close() error
func (*RedisRelay) ForwardToBus ¶
type RedisRelayConfig ¶
type Signal ¶
type Signal string
Signal identifies the type of event being emitted.
const ( PreCreate Signal = "pre_create" PostCreate Signal = "post_create" PreSave Signal = "pre_save" PostSave Signal = "post_save" PreDelete Signal = "pre_delete" PostDelete Signal = "post_delete" PreUpdate Signal = "pre_update" PostUpdate Signal = "post_update" )
Built-in signals for model lifecycle events.