Documentation ¶
Index ¶
- Constants
- func Setup(eventStore eh.EventStore, eventBus eh.EventBus, ...)
- type AcceptInvite
- type ConfirmInvite
- type CreateInvite
- type DeclineInvite
- type DenyInvite
- type GuestList
- type GuestListProjector
- type Invitation
- type InvitationAggregate
- type InvitationProjector
- type InviteCreatedData
- type Logger
- type ResponseSaga
Constants ¶
const ( CreateInviteCommand eh.CommandType = "CreateInvite" AcceptInviteCommand eh.CommandType = "AcceptInvite" DeclineInviteCommand eh.CommandType = "DeclineInvite" ConfirmInviteCommand eh.CommandType = "ConfirmInvite" DenyInviteCommand eh.CommandType = "DenyInvite" )
const ( // InviteCreatedEvent is when an invite is created. InviteCreatedEvent eh.EventType = "InviteCreated" // InviteAcceptedEvent is when an invite has been accepted by the guest. InviteAcceptedEvent eh.EventType = "InviteAccepted" // InviteDeclinedEvent is when an invite has been declined by the guest. InviteDeclinedEvent eh.EventType = "InviteDeclined" // InviteConfirmedEvent is when an invite has been cornfirmed as booked. InviteConfirmedEvent eh.EventType = "InviteConfirmed" // InviteDeniedEvent is when an invite has been declined to be booked. InviteDeniedEvent eh.EventType = "InviteDenied" )
const InvitationAggregateType eh.AggregateType = "Invitation"
InvitationAggregateType is the type name of the aggregate.
const ResponseSagaType saga.Type = "ResponseSaga"
ResponseSagaType is the type of the saga.
Variables ¶
This section is empty.
Functions ¶
func Setup ¶
func Setup( eventStore eh.EventStore, eventBus eh.EventBus, eventPublisher eh.EventPublisher, commandBus *bus.CommandHandler, invitationRepo, guestListRepo eh.ReadWriteRepo, eventID eh.UUID)
Setup configures the domain.
Types ¶
type AcceptInvite ¶
AcceptInvite is a command for accepting invites.
func (AcceptInvite) AggregateID ¶
func (c AcceptInvite) AggregateID() eh.UUID
func (AcceptInvite) AggregateType ¶
func (c AcceptInvite) AggregateType() eh.AggregateType
func (AcceptInvite) CommandType ¶
func (c AcceptInvite) CommandType() eh.CommandType
type ConfirmInvite ¶
ConfirmInvite is a command for confirming invites.
func (ConfirmInvite) AggregateID ¶
func (c ConfirmInvite) AggregateID() eh.UUID
func (ConfirmInvite) AggregateType ¶
func (c ConfirmInvite) AggregateType() eh.AggregateType
func (ConfirmInvite) CommandType ¶
func (c ConfirmInvite) CommandType() eh.CommandType
type CreateInvite ¶
CreateInvite is a command for creating invites.
func (CreateInvite) AggregateID ¶
func (c CreateInvite) AggregateID() eh.UUID
func (CreateInvite) AggregateType ¶
func (c CreateInvite) AggregateType() eh.AggregateType
func (CreateInvite) CommandType ¶
func (c CreateInvite) CommandType() eh.CommandType
type DeclineInvite ¶
DeclineInvite is a command for declining invites.
func (DeclineInvite) AggregateID ¶
func (c DeclineInvite) AggregateID() eh.UUID
func (DeclineInvite) AggregateType ¶
func (c DeclineInvite) AggregateType() eh.AggregateType
func (DeclineInvite) CommandType ¶
func (c DeclineInvite) CommandType() eh.CommandType
type DenyInvite ¶
DenyInvite is a command for confirming invites.
func (DenyInvite) AggregateID ¶
func (c DenyInvite) AggregateID() eh.UUID
func (DenyInvite) AggregateType ¶
func (c DenyInvite) AggregateType() eh.AggregateType
func (DenyInvite) CommandType ¶
func (c DenyInvite) CommandType() eh.CommandType
type GuestList ¶
type GuestList struct { ID eh.UUID `bson:"_id"` NumGuests int NumAccepted int NumDeclined int NumConfirmed int NumDenied int }
GuestList is a read model object for the guest list.
type GuestListProjector ¶
type GuestListProjector struct {
// contains filtered or unexported fields
}
GuestListProjector is a projector that updates the guest list. It is implemented as a manual projector, not using the Projector interface.
func NewGuestListProjector ¶
func NewGuestListProjector(repo eh.ReadWriteRepo, eventID eh.UUID) *GuestListProjector
NewGuestListProjector creates a new GuestListProjector.
func (*GuestListProjector) HandleEvent ¶
HandleEvent implements the HandleEvent method of the EventHandler interface.
func (*GuestListProjector) HandlerType ¶
func (p *GuestListProjector) HandlerType() eh.EventHandlerType
HandlerType implements the HandlerType method of the EventHandler interface.
type Invitation ¶
Invitation is a read model object for an invitation.
func (*Invitation) AggregateVersion ¶
func (i *Invitation) AggregateVersion() int
AggregateVersion implements the AggregateVersion method of the eventhorizon.Versionable interface.
func (*Invitation) EntityID ¶
func (i *Invitation) EntityID() eh.UUID
EntityID implements the EntityID method of the eventhorizon.Entity interface.
type InvitationAggregate ¶
type InvitationAggregate struct { // AggregateBase implements most of the eventhorizon.Aggregate interface. *events.AggregateBase // contains filtered or unexported fields }
InvitationAggregate is the root aggregate.
The aggregate root will guard that the invitation can only be accepted OR declined, but not both.
func NewInvitationAggregate ¶
func NewInvitationAggregate(id eh.UUID) *InvitationAggregate
NewInvitationAggregate creates a new InvitationAggregate with an ID.
func (*InvitationAggregate) ApplyEvent ¶
ApplyEvent implements the ApplyEvent method of the Aggregate interface.
func (*InvitationAggregate) HandleCommand ¶
HandleCommand implements the HandleCommand method of the Aggregate interface.
type InvitationProjector ¶
type InvitationProjector struct{}
InvitationProjector is a projector that updates the invitations.
func NewInvitationProjector ¶
func NewInvitationProjector() *InvitationProjector
NewInvitationProjector creates a new InvitationProjector.
func (*InvitationProjector) Project ¶
func (p *InvitationProjector) Project(ctx context.Context, event eh.Event, entity eh.Entity) (eh.Entity, error)
Project implements the Project method of the Projector interface.
func (*InvitationProjector) ProjectorType ¶
func (p *InvitationProjector) ProjectorType() projector.Type
ProjectorType implements the ProjectorType method of the Projector interface.
type InviteCreatedData ¶
InviteCreatedData is the event data for when an invite has been created.
type ResponseSaga ¶
type ResponseSaga struct {
// contains filtered or unexported fields
}
ResponseSaga is a saga that confirmes all accepted invites until a guest limit has been reached.
func NewResponseSaga ¶
func NewResponseSaga(guestLimit int) *ResponseSaga
NewResponseSaga returns a new ResponseSage with a guest limit.
func (*ResponseSaga) SagaType ¶
func (s *ResponseSaga) SagaType() saga.Type
SagaType implements the SagaType method of the Saga interface.