Skip to content

Commit 9da79fc

Browse files
committed
Entity, Aggregate Root and Domain Event
1 parent 7516744 commit 9da79fc

File tree

3 files changed

+35
-1
lines changed

3 files changed

+35
-1
lines changed

domain/entity/base_aggregate_root.go

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,28 @@ import "github.com/tonybka/go-base-ddd/domain/event"
44

55
type BaseAggregateRoot struct {
66
BaseEntity
7+
8+
domainEvents []event.IBaseDomainEvent
9+
}
10+
11+
func NewBaseAggregateRoot() (BaseAggregateRoot, error) {
12+
base, err := NewBaseEntity()
13+
if err != nil {
14+
return BaseAggregateRoot{}, nil
15+
}
16+
17+
events := make([]event.IBaseDomainEvent, 0)
18+
19+
return BaseAggregateRoot{
20+
BaseEntity: base,
21+
domainEvents: events,
22+
}, nil
723
}
824

925
func (aggregate *BaseAggregateRoot) AddEvent(event event.IBaseDomainEvent) {
26+
aggregate.domainEvents = append(aggregate.domainEvents, event)
27+
}
1028

29+
func (aggregate *BaseAggregateRoot) PendingEvents() []event.IBaseDomainEvent {
30+
return aggregate.domainEvents
1131
}

domain/entity/base_entity.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,13 @@ import "github.com/google/uuid"
55
type BaseEntity struct {
66
ID uuid.UUID
77
}
8+
9+
func NewBaseEntity() (BaseEntity, error) {
10+
id, err := uuid.NewUUID()
11+
12+
if err != nil {
13+
return BaseEntity{}, err
14+
}
15+
16+
return BaseEntity{ID: id}, nil
17+
}

domain/event/base_domain_event.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
11
package event
22

3-
type IBaseDomainEvent struct {
3+
import "time"
4+
5+
type IBaseDomainEvent interface {
6+
EventName() string
7+
OccurredAt() time.Time
48
}

0 commit comments

Comments
 (0)