package iam import ( "context" "github.com/caos/zitadel/internal/domain" "github.com/caos/zitadel/internal/eventstore" "github.com/caos/zitadel/internal/eventstore/repository" ) const ( UniqueConstraintsMigratedEventType eventstore.EventType = "iam.unique.constraints.migrated" ) type MigrateUniqueConstraintEvent struct { eventstore.BaseEvent `json:"-"` uniqueConstraintMigrations []*domain.UniqueConstraintMigration `json:"-"` } func NewAddMigrateUniqueConstraint(uniqueMigration *domain.UniqueConstraintMigration) *eventstore.EventUniqueConstraint { return eventstore.NewAddEventUniqueConstraint( uniqueMigration.UniqueType, uniqueMigration.UniqueField, uniqueMigration.ErrorMessage) } func (e *MigrateUniqueConstraintEvent) Data() interface{} { return nil } func (e *MigrateUniqueConstraintEvent) UniqueConstraints() []*eventstore.EventUniqueConstraint { constraints := make([]*eventstore.EventUniqueConstraint, len(e.uniqueConstraintMigrations)) for i, uniqueMigration := range e.uniqueConstraintMigrations { constraints[i] = NewAddMigrateUniqueConstraint(uniqueMigration) } return constraints } func NewMigrateUniqueConstraintEvent( ctx context.Context, aggregate *eventstore.Aggregate, uniqueConstraintMigrations []*domain.UniqueConstraintMigration) *MigrateUniqueConstraintEvent { return &MigrateUniqueConstraintEvent{ BaseEvent: *eventstore.NewBaseEventForPush( ctx, aggregate, UniqueConstraintsMigratedEventType, ), uniqueConstraintMigrations: uniqueConstraintMigrations, } } func MigrateUniqueConstraintEventMapper(event *repository.Event) (eventstore.EventReader, error) { return &MigrateUniqueConstraintEvent{ BaseEvent: *eventstore.BaseEventFromRepo(event), }, nil }