This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
SCENARIO: A prospective Customer registers her account | |
When a Customer registers as [Fiona Gallagher] with [fiona@gallagher.net] | |
Then her account should show the data she supplied: | |
GivenName: Fiona | |
FamilyName: Gallagher | |
EmailAddress: fiona@gallagher.net | |
IsEmailAddressConfirmed: false | |
SCENARIO: A prospective Customer can't register because her email address is already used | |
Given a Customer registered as [Fiona Gallagher] with [fiona@gallagher.net] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package shared | |
import "github.com/cockroachdb/errors" | |
var ( | |
ErrInputIsInvalid = errors.New("input is invalid") | |
ErrNotFound = errors.New("not found") | |
ErrDuplicate = errors.New("duplicate") | |
ErrDomainConstraintsViolation = errors.New("domain constraints violation") |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package value | |
import ( | |
"github.com/AntonStoeckl/go-iddd/service/shared" | |
"github.com/cockroachdb/errors" | |
"github.com/google/uuid" | |
) | |
type CustomerID struct { | |
value string |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package domain | |
import ( | |
"github.com/AntonStoeckl/go-iddd/service/customeraccounts/application/domain/customer/value" | |
"github.com/AntonStoeckl/go-iddd/service/shared/es" | |
) | |
type CustomerRegistered struct { | |
customerID value.CustomerID | |
emailAddress value.EmailAddress |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package es | |
type DomainEvent interface { | |
Meta() EventMeta | |
IsFailureEvent() bool | |
FailureReason() error | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package es | |
import ( | |
"reflect" | |
"strings" | |
"time" | |
) | |
const ( | |
metaTimestampFormat = time.RFC3339Nano |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package domain | |
import ( | |
"github.com/AntonStoeckl/go-iddd/service/customeraccounts/application/domain/customer/value" | |
) | |
type RegisterCustomer struct { | |
customerID value.CustomerID | |
emailAddress value.EmailAddress | |
confirmationHash value.ConfirmationHash |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package customer | |
import ( | |
"github.com/AntonStoeckl/go-iddd/service/customeraccounts/application/domain" | |
"github.com/AntonStoeckl/go-iddd/service/customeraccounts/application/domain/customer/value" | |
"github.com/AntonStoeckl/go-iddd/service/shared/es" | |
) | |
type currentState struct { | |
id value.CustomerID |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package customer | |
import ( | |
"github.com/AntonStoeckl/go-iddd/service/customeraccounts/application/domain" | |
) | |
func Register(with domain.RegisterCustomer) domain.CustomerRegistered { | |
event := domain.BuildCustomerRegistered( | |
with.CustomerID(), | |
with.EmailAddress(), |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package customer | |
import ( | |
"github.com/AntonStoeckl/go-iddd/service/customeraccounts/application/domain" | |
"github.com/AntonStoeckl/go-iddd/service/shared/es" | |
"github.com/cockroachdb/errors" | |
) | |
func ConfirmEmailAddress(eventStream es.EventStream, command domain.ConfirmCustomerEmailAddress) (es.RecordedEvents, error) { | |
customer := buildCurrentStateFrom(eventStream) |
OlderNewer