Documentation
¶
Overview ¶
Package shell provides conversion functions between domain events and storable events for the example: Book circulation in a public library
This package implements the "imperative shell" pattern, handling the translation between the functional core (domain events) and the external storage layer (storable events). It manages event serialization, deserialization, and metadata handling for the event sourcing system.
Index ¶
- Variables
- func DomainEventFrom(storableEvent eventstore.StorableEvent) (core.DomainEvent, error)
- func DomainEventsFrom(storableEvents eventstore.StorableEvents) (core.DomainEvents, error)
- func StorableEventFrom(event core.DomainEvent, metadata EventMetadata) (eventstore.StorableEvent, error)
- func StorableEventWithEmptyMetadataFrom(event core.DomainEvent) (eventstore.StorableEvent, error)
- type CausationID
- type CorrelationID
- type EventEnvelope
- type EventEnvelopes
- type EventMetadata
- type MessageID
Constants ¶
This section is empty.
Variables ¶
var ErrEventEnvelopeFromStorableEventFailed = errors.New("event envelope from storable event failed")
ErrEventEnvelopeFromStorableEventFailed is returned when event envelope conversion fails
var ErrMappingToDomainEventFailed = errors.New("mapping to domain event failed")
ErrMappingToDomainEventFailed is returned when domain event conversion fails
var ErrMappingToDomainEventUnknownEventType = errors.New("unknown event type")
ErrMappingToDomainEventUnknownEventType is returned for unrecognized event types
var ErrMappingToEventMetadataFailed = errors.New("mapping to event metadata failed")
ErrMappingToEventMetadataFailed is returned when metadata conversion fails
var ErrMappingToStorableEventFailedForDomainEvent = errors.New("mapping to storable event failed for domain event")
ErrMappingToStorableEventFailedForDomainEvent is returned when domain event serialization fails
var ErrMappingToStorableEventFailedForMetadata = errors.New("mapping to storable event failed for metadata")
ErrMappingToStorableEventFailedForMetadata is returned when metadata serialization fails
Functions ¶
func DomainEventFrom ¶
func DomainEventFrom(storableEvent eventstore.StorableEvent) (core.DomainEvent, error)
DomainEventFrom converts a StorableEvent to its corresponding DomainEvent
func DomainEventsFrom ¶
func DomainEventsFrom(storableEvents eventstore.StorableEvents) (core.DomainEvents, error)
DomainEventsFrom converts multiple StorableEvents to DomainEvents
func StorableEventFrom ¶
func StorableEventFrom(event core.DomainEvent, metadata EventMetadata) (eventstore.StorableEvent, error)
StorableEventFrom converts a DomainEvent and EventMetadata to a StorableEvent
func StorableEventWithEmptyMetadataFrom ¶
func StorableEventWithEmptyMetadataFrom(event core.DomainEvent) (eventstore.StorableEvent, error)
StorableEventWithEmptyMetadataFrom converts a DomainEvent to a StorableEvent with empty metadata
Types ¶
type CausationID ¶
type CausationID = string
CausationID represents the ID of the event that caused this event
type CorrelationID ¶
type CorrelationID = string
CorrelationID represents the ID correlating related events
type EventEnvelope ¶
type EventEnvelope struct {
DomainEvent core.DomainEvent
EventMetadata EventMetadata
}
EventEnvelope combines a domain event with its metadata
func BuildEventEnvelope ¶
func BuildEventEnvelope(domainEvent core.DomainEvent, eventMetadata EventMetadata) EventEnvelope
BuildEventEnvelope creates a new EventEnvelope from domain event and metadata
func EventEnvelopeFrom ¶
func EventEnvelopeFrom(storableEvent eventstore.StorableEvent) (EventEnvelope, error)
EventEnvelopeFrom converts a StorableEvent to an EventEnvelope
type EventEnvelopes ¶
type EventEnvelopes = []EventEnvelope
EventEnvelopes is a slice of EventEnvelope instances
func EventEnvelopesFrom ¶
func EventEnvelopesFrom(storableEvents eventstore.StorableEvents) (EventEnvelopes, error)
EventEnvelopesFrom converts multiple StorableEvents to EventEnvelopes
type EventMetadata ¶
type EventMetadata struct {
MessageID MessageID
CausationID CausationID
CorrelationID CorrelationID
}
EventMetadata contains event tracking information
func BuildEventMetadata ¶
func BuildEventMetadata(messageID uuid.UUID, causationID uuid.UUID, correlationID uuid.UUID) EventMetadata
BuildEventMetadata creates EventMetadata from UUID values
func EventMetadataFrom ¶
func EventMetadataFrom(storableEvent eventstore.StorableEvent) (EventMetadata, error)
EventMetadataFrom extracts EventMetadata from a StorableEvent