Documentation ¶
Index ¶
- Constants
- Variables
- func Decode(object interface{}, data []byte) error
- func Encode(object interface{}) ([]byte, error)
- func MigrateMongoDB(mongoDB *mongo.Database, dir string) error
- func NewIdentity(objectType string) string
- type DomainObject
- type DomainObjectMemento
- type Event
- type EventPublisher
- type EventReceiver
- type EventStream
- type InMemoryRepository
- func (r *InMemoryRepository[T]) EventsSince(ctx context.Context, timestamp time.Time, limit int) ([]Event, error)
- func (r *InMemoryRepository[T]) Exists(ctx context.Context, objectId string) (bool, error)
- func (r *InMemoryRepository[T]) Load(ctx context.Context, objectID string, object T) error
- func (r *InMemoryRepository[T]) Remove(ctx context.Context, objectID string, object T) error
- func (r *InMemoryRepository[T]) Save(ctx context.Context, object T) error
- func (r *InMemoryRepository[T]) Update(ctx context.Context, objectID string, object T, nbRetries int, ...) (T, error)
- type MongoRepository
- func (r *MongoRepository[T]) EventsSince(ctx context.Context, timestamp time.Time, limit int) ([]Event, error)
- func (r *MongoRepository[T]) Exists(ctx context.Context, objectId string) (bool, error)
- func (r *MongoRepository[T]) Load(ctx context.Context, objectID string, object T) error
- func (r *MongoRepository[T]) ObjectEventsSinceVersion(ctx context.Context, objectID string, version int) ([]Event, error)
- func (r *MongoRepository[T]) Remove(ctx context.Context, objectID string, object T) error
- func (r *MongoRepository[T]) Save(ctx context.Context, object T) error
- func (r *MongoRepository[T]) Update(ctx context.Context, objectID string, object T, nbRetries int, ...) (T, error)
- type RemoteEventListener
- type RemoteEventPublisher
- type Repository
- type Stream
- func (s *Stream) AddEvent(object DomainObject, eventName string, payload msgp.Marshaler) error
- func (s *Stream) Clear()
- func (s *Stream) CollectUnsavedEvents() []Event
- func (s *Stream) ContainsEventWithId(eventId string) bool
- func (s *Stream) Events() []Event
- func (s *Stream) LastVersion() int
- func (s *Stream) LoadEvent(object DomainObject, event Event) error
- func (s *Stream) SetStreamVersion(version int)
Constants ¶
View Source
const REMOVED_EVENT_NAME = "removed"
Variables ¶
View Source
var ConcurrencyError = errors.New("concurrency error while saving")
View Source
var InvalidUpdateCallback = errors.New("callback should return a non nil object if error is nil")
Functions ¶
func MigrateMongoDB ¶ added in v1.4.0
func NewIdentity ¶
Types ¶
type DomainObject ¶
type DomainObject interface { EventStream ObjectID() string Apply(eventName string, eventPayload []byte) error }
DomainObject is an interface representing a domain object necessary methods
type DomainObjectMemento ¶ added in v1.3.0
type DomainObjectMemento interface { DumpMemento() (msgp.Marshaler, error) ApplyMemento(payload []byte) error SetVersion(version int) }
DomainObjectMemento is an interface representing a domain object capable of exposing a memento
type Event ¶
type Event struct {
// contains filtered or unexported fields
}
Event represents a domain Event
func Deserialize ¶ added in v1.3.5
func ReloadEvent ¶ added in v1.2.1
type EventPublisher ¶
type EventPublisher struct { Wait bool // contains filtered or unexported fields }
func NewEventPublisher ¶
func NewEventPublisher() EventPublisher
func (*EventPublisher) OnEvent ¶ added in v1.3.5
func (p *EventPublisher) OnEvent(event Event)
func (*EventPublisher) Publish ¶
func (p *EventPublisher) Publish(events []Event)
func (*EventPublisher) Register ¶
func (p *EventPublisher) Register(receiver EventReceiver)
type EventReceiver ¶
type EventReceiver interface {
OnEvent(event Event)
}
func NewRemoteEventPublisher ¶ added in v1.3.5
func NewRemoteEventPublisher(queue services.QueueService, errChan chan<- error) EventReceiver
type EventStream ¶
type EventStream interface { AddEvent(object DomainObject, eventName string, payload msgp.Marshaler) error LoadEvent(object DomainObject, event Event) error Events() []Event CollectUnsavedEvents() []Event LastVersion() int SetStreamVersion(version int) ContainsEventWithId(eventID string) bool Clear() }
EventStream is an interface representing a stream of events
type InMemoryRepository ¶
type InMemoryRepository[T DomainObject] struct { // contains filtered or unexported fields }
func NewInMemoryRepository ¶
func NewInMemoryRepository[T DomainObject](publisher *EventPublisher) InMemoryRepository[T]
func (*InMemoryRepository[T]) EventsSince ¶ added in v1.2.0
func (*InMemoryRepository[T]) Load ¶
func (r *InMemoryRepository[T]) Load(ctx context.Context, objectID string, object T) error
func (*InMemoryRepository[T]) Remove ¶ added in v1.5.0
func (r *InMemoryRepository[T]) Remove(ctx context.Context, objectID string, object T) error
type MongoRepository ¶
type MongoRepository[T DomainObject] struct { // contains filtered or unexported fields }
func NewMongoRepository ¶
func NewMongoRepository[T DomainObject](database *mongo.Database, publisher *EventPublisher) (*MongoRepository[T], error)
func (*MongoRepository[T]) EventsSince ¶ added in v1.2.0
func (*MongoRepository[T]) Load ¶
func (r *MongoRepository[T]) Load(ctx context.Context, objectID string, object T) error
func (*MongoRepository[T]) ObjectEventsSinceVersion ¶ added in v1.3.1
func (*MongoRepository[T]) Remove ¶ added in v1.5.0
func (r *MongoRepository[T]) Remove(ctx context.Context, objectID string, object T) error
type RemoteEventListener ¶ added in v1.3.5
type RemoteEventListener struct {
// contains filtered or unexported fields
}
func NewRemoteEventListener ¶ added in v1.3.5
func NewRemoteEventListener(queue services.QueueService, receiver EventReceiver, errChan chan<- error) RemoteEventListener
func (*RemoteEventListener) Listen ¶ added in v1.3.5
func (r *RemoteEventListener) Listen()
type RemoteEventPublisher ¶ added in v1.3.5
type RemoteEventPublisher struct {
// contains filtered or unexported fields
}
func (*RemoteEventPublisher) OnEvent ¶ added in v1.3.5
func (r *RemoteEventPublisher) OnEvent(event Event)
type Repository ¶
type Repository[T DomainObject] interface { Save(ctx context.Context, object T) error Load(ctx context.Context, objectID string, object T) error Exists(ctx context.Context, objectID string) (bool, error) EventsSince(ctx context.Context, time time.Time, limit int) ([]Event, error) Update(ctx context.Context, objectID string, object T, nbRetries int, updater func(T) (T, error)) (T, error) Remove(ctx context.Context, objectID string, object T) error }
type Stream ¶
type Stream struct {
// contains filtered or unexported fields
}
Stream is an implementation of an EventStream
func (*Stream) CollectUnsavedEvents ¶ added in v1.3.9
func (*Stream) ContainsEventWithId ¶
ContainsEventWithId checks if an event is known in the stream
func (*Stream) LastVersion ¶
LastVersion returns the last known version
func (*Stream) LoadEvent ¶
func (s *Stream) LoadEvent(object DomainObject, event Event) error
LoadEvent load an existing event into the stream
func (*Stream) SetStreamVersion ¶ added in v1.3.1
Source Files ¶
Directories ¶
Path | Synopsis |
---|---|
examples
|
|
Package mocks is a generated GoMock package.
|
Package mocks is a generated GoMock package. |
Click to show internal directories.
Click to hide internal directories.