Documentation
¶
Index ¶
- type Entity
- type Event
- type GenericEvent
- func (e *GenericEvent) GetAggregatorId() string
- func (e *GenericEvent) GetCreateTime() time.Time
- func (e *GenericEvent) GetPayload() string
- func (e *GenericEvent) GetType() string
- func (e *GenericEvent) GetVersion() int32
- func (e *GenericEvent) InitBy(event Event)
- func (e *GenericEvent) LoadPayload() error
- func (e *GenericEvent) SavePayload() error
- type KafkaProvider
- type MemoryRepository
- func (r *MemoryRepository) AddNewEvent(event Event)
- func (r *MemoryRepository) AddOrModifyEntity(entity Entity)
- func (r *MemoryRepository) GetEntity(id string) (Entity, error)
- func (r *MemoryRepository) GetUncommitedChanges() []Event
- func (r *MemoryRepository) InitProvider(provider Provider, child Repository) error
- func (r *MemoryRepository) Replay(events []Event) error
- func (r *MemoryRepository) Save(events []Event) error
- type Provider
- type Repository
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Entity ¶
type Entity interface {
GetId() string
}
Entity is an interface represent one aggregate in repository
type Event ¶
type Event interface {
GetType() string
GetAggregatorId() string
GetCreateTime() time.Time
GetVersion() int32
GetPayload() string
LoadPayload() error
SavePayload() error
InitBy(event Event)
}
Event is an basic description for object event keep in event store and transfer between service (usually via some bus)
type GenericEvent ¶
type GenericEvent struct {
Type string
AggregatorId string
CreateTime string
Version int32
Payload string
}
func (*GenericEvent) GetAggregatorId ¶
func (e *GenericEvent) GetAggregatorId() string
func (*GenericEvent) GetCreateTime ¶
func (e *GenericEvent) GetCreateTime() time.Time
func (*GenericEvent) GetPayload ¶
func (e *GenericEvent) GetPayload() string
func (*GenericEvent) GetType ¶
func (e *GenericEvent) GetType() string
func (*GenericEvent) GetVersion ¶
func (e *GenericEvent) GetVersion() int32
func (*GenericEvent) InitBy ¶
func (e *GenericEvent) InitBy(event Event)
func (*GenericEvent) LoadPayload ¶
func (e *GenericEvent) LoadPayload() error
func (*GenericEvent) SavePayload ¶
func (e *GenericEvent) SavePayload() error
type KafkaProvider ¶
type KafkaProvider struct {
// contains filtered or unexported fields
}
KafkaProvider implemented provider for kafka
func (*KafkaProvider) FetchAllEvents ¶
func (p *KafkaProvider) FetchAllEvents(batch int) (<-chan []Event, error)
FetchAllEvents get all events from all partitions from specified topic
func (*KafkaProvider) SendEvents ¶
func (p *KafkaProvider) SendEvents(events []Event) error
SendEvents put messages on kafka topic
type MemoryRepository ¶
type MemoryRepository struct {
// contains filtered or unexported fields
}
MemoryRepository is an basic implementation of Repository which keep data in the memory. This struct waiting for inheritance by own Repository. Inherited implementation should contains special methods for each needed case of event type
func NewMemoryRepository ¶
func NewMemoryRepository() *MemoryRepository
NewMemoryRepository create empty initialized instance
func (*MemoryRepository) AddNewEvent ¶
func (r *MemoryRepository) AddNewEvent(event Event)
AddNewEvent set newly created event to uncommitted list of events
func (*MemoryRepository) AddOrModifyEntity ¶
func (r *MemoryRepository) AddOrModifyEntity(entity Entity)
AddOrModifyEntity just set new entity to collections of Entities. It will be replace if this id exists
func (*MemoryRepository) GetEntity ¶
func (r *MemoryRepository) GetEntity(id string) (Entity, error)
GetEntity return current entity state provided by id
func (*MemoryRepository) GetUncommitedChanges ¶
func (r *MemoryRepository) GetUncommitedChanges() []Event
GetUncommitedChanges get new events which were created by changes methods
func (*MemoryRepository) InitProvider ¶
func (r *MemoryRepository) InitProvider(provider Provider, child Repository) error
InitProvider set event store provider to repository and start restore entities
func (*MemoryRepository) Replay ¶
func (r *MemoryRepository) Replay(events []Event) error
Replay method update state of entity/ies by provided events. This method should be override by true implementation with update cases for each event type
func (*MemoryRepository) Save ¶
func (r *MemoryRepository) Save(events []Event) error
Save events - so to be honest, just send events to bus provider
type Provider ¶
type Provider interface {
FetchAllEvents(batch int) (<-chan []Event, error)
SendEvents(events []Event) error
}
Provider interface
type Repository ¶
type Repository interface {
InitProvider(provider Provider, child Repository) error // ??
AddOrModifyEntity(entity Entity)
GetEntity(id string) (Entity, error)
Replay(events []Event) error
AddNewEvent(event Event)
GetUncommitedChanges() []Event
Save(events []Event) error
}
Repository it's an abstraction for database which keeps all entities (aggregators) in theirs last state

