-
Notifications
You must be signed in to change notification settings - Fork 455
/
event.go
47 lines (42 loc) · 1.57 KB
/
event.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
package eventstore
import (
"time"
)
// Command is the intend to store an event into the eventstore
type Command interface {
//Aggregate is the metadata of an aggregate
Aggregate() Aggregate
// EditorService is the service who wants to push the event
EditorService() string
//EditorUser is the user who wants to push the event
EditorUser() string
//KeyType must return an event type which should be unique in the aggregate
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{}
//UniqueConstraints should be added for unique attributes of an event, if nil constraints will not be checked
UniqueConstraints() []*EventUniqueConstraint
}
// Event is a stored activity
type Event 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
Type() EventType
Aggregate() Aggregate
Sequence() uint64
CreationDate() time.Time
//PreviousAggregateSequence returns the previous sequence of the aggregate root (e.g. for org.42508134)
PreviousAggregateSequence() uint64
//PreviousAggregateTypeSequence returns the previous sequence of the aggregate type (e.g. for org)
PreviousAggregateTypeSequence() uint64
//DataAsBytes returns the payload of the event. It represent the changed fields by the event
DataAsBytes() []byte
}