fix: unique constraints on instance domain events (#3635)

This commit is contained in:
Livio Amstutz
2022-05-16 11:52:54 +02:00
committed by GitHub
parent 48fbf1a28e
commit d401439427
7 changed files with 38 additions and 68 deletions

View File

@@ -104,10 +104,14 @@ func commandsToRepository(instanceID string, cmds []Command) (events []*reposito
func uniqueConstraintsToRepository(instanceID string, constraints []*EventUniqueConstraint) (uniqueConstraints []*repository.UniqueConstraint) {
uniqueConstraints = make([]*repository.UniqueConstraint, len(constraints))
for i, constraint := range constraints {
var id string
if !constraint.IsGlobal {
id = instanceID
}
uniqueConstraints[i] = &repository.UniqueConstraint{
UniqueType: constraint.UniqueType,
UniqueField: constraint.UniqueField,
InstanceID: instanceID,
InstanceID: id,
Action: uniqueConstraintActionToRepository(constraint.Action),
ErrorMessage: constraint.ErrorMessage,
}

View File

@@ -9,6 +9,8 @@ type EventUniqueConstraint struct {
Action UniqueConstraintAction
//ErrorMessage defines the translation file key for the error message
ErrorMessage string
//IsGlobal defines if the unique constraint is globally unique or just within a single instance
IsGlobal bool
}
type UniqueConstraintAction int32
@@ -39,3 +41,27 @@ func NewRemoveEventUniqueConstraint(
Action: UniqueConstraintRemove,
}
}
func NewAddGlobalEventUniqueConstraint(
uniqueType,
uniqueField,
errMessage string) *EventUniqueConstraint {
return &EventUniqueConstraint{
UniqueType: uniqueType,
UniqueField: uniqueField,
ErrorMessage: errMessage,
IsGlobal: true,
Action: UniqueConstraintAdd,
}
}
func NewRemoveGlobalEventUniqueConstraint(
uniqueType,
uniqueField string) *EventUniqueConstraint {
return &EventUniqueConstraint{
UniqueType: uniqueType,
UniqueField: uniqueField,
IsGlobal: true,
Action: UniqueConstraintRemove,
}
}