package command import ( "github.com/caos/zitadel/internal/eventstore/v2" "github.com/caos/zitadel/internal/v2/domain" "github.com/caos/zitadel/internal/v2/repository/iam" ) type IAMIdentityProviderWriteModel struct { IdentityProviderWriteModel } func NewIAMIdentityProviderWriteModel(idpConfigID string) *IAMIdentityProviderWriteModel { return &IAMIdentityProviderWriteModel{ IdentityProviderWriteModel: IdentityProviderWriteModel{ WriteModel: eventstore.WriteModel{ AggregateID: domain.IAMID, ResourceOwner: domain.IAMID, }, IDPConfigID: idpConfigID, }, } } func (wm *IAMIdentityProviderWriteModel) AppendEvents(events ...eventstore.EventReader) { for _, event := range events { switch e := event.(type) { case *iam.IdentityProviderAddedEvent: if e.IDPConfigID != wm.IDPConfigID { continue } wm.IdentityProviderWriteModel.AppendEvents(&e.IdentityProviderAddedEvent) case *iam.IdentityProviderRemovedEvent: if e.IDPConfigID != wm.IDPConfigID { continue } wm.IdentityProviderWriteModel.AppendEvents(&e.IdentityProviderRemovedEvent) } } } func (wm *IAMIdentityProviderWriteModel) Reduce() error { return wm.IdentityProviderWriteModel.Reduce() } func (wm *IAMIdentityProviderWriteModel) Query() *eventstore.SearchQueryBuilder { return eventstore.NewSearchQueryBuilder(eventstore.ColumnsEvent, iam.AggregateType). AggregateIDs(wm.AggregateID). ResourceOwner(wm.ResourceOwner) }