2020-10-27 16:03:17 +01:00
|
|
|
package eventstore
|
|
|
|
|
|
|
|
import (
|
|
|
|
"time"
|
|
|
|
)
|
|
|
|
|
2020-11-06 13:47:27 +01:00
|
|
|
type EventPusher interface {
|
2021-02-18 14:48:27 +01:00
|
|
|
//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
|
2021-01-04 14:52:13 +01:00
|
|
|
//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{}
|
2021-01-21 10:49:38 +01:00
|
|
|
//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
|
2021-01-04 14:52:13 +01:00
|
|
|
//KeyType is the type of the event
|
2020-11-06 13:47:27 +01:00
|
|
|
Type() EventType
|
|
|
|
|
2021-02-18 14:48:27 +01:00
|
|
|
Aggregate() Aggregate
|
|
|
|
|
2020-11-06 13:47:27 +01:00
|
|
|
Sequence() uint64
|
|
|
|
CreationDate() time.Time
|
2021-02-24 13:24:33 +01:00
|
|
|
//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
|
|
|
}
|