44 lines
1.3 KiB
Go
Raw Normal View History

2020-10-27 16:03:17 +01:00
package eventstore
import (
"time"
)
2020-11-06 13:47:27 +01:00
type EventPusher interface {
//Aggregate is the metadata of an aggregate
Aggregate() Aggregate
2020-11-06 13:47:27 +01:00
// EditorService is the service who wants to push the event
2020-10-27 16:03:17 +01:00
EditorService() string
2020-11-06 13:47:27 +01:00
//EditorUser is the user who wants to push the event
2020-10-27 16:03:17 +01:00
EditorUser() string
//KeyType must return an event type which should be unique in the aggregate
2020-10-27 16:03:17 +01:00
Type() EventType
//Data returns the payload of the event. It represent the changed fields by the event
// valid types are:
// * nil (no payload),
// * json byte array
// * struct which can be marshalled to json
// * pointer to struct which can be marshalled to json
Data() interface{}
//Assets contain assets in form of []byte, these will be stored to a separate table
Assets() []*Asset
//UniqueConstraints should be added for unique attributes of an event, if nil constraints will not be checked
UniqueConstraints() []*EventUniqueConstraint
2020-10-27 16:03:17 +01:00
}
2020-11-06 13:47:27 +01:00
type EventReader interface {
// EditorService is the service who pushed the event
EditorService() string
//EditorUser is the user who pushed the event
EditorUser() string
//KeyType is the type of the event
2020-11-06 13:47:27 +01:00
Type() EventType
Aggregate() Aggregate
2020-11-06 13:47:27 +01:00
Sequence() uint64
CreationDate() time.Time
//DataAsBytes returns the payload of the event. It represent the changed fields by the event
DataAsBytes() []byte
2020-10-27 16:03:17 +01:00
}