diff --git a/backend/v3/domain/id_provider.go b/backend/v3/domain/id_provider.go index bb7bc11630..5ef8dcdf5e 100644 --- a/backend/v3/domain/id_provider.go +++ b/backend/v3/domain/id_provider.go @@ -53,9 +53,11 @@ type IdentityProvider struct { Name string `json:"name,omitempty" db:"name"` Type string `json:"type,omitempty" db:"type"` AllowCreation bool `json:"allowCreation,omitempty" db:"allow_creation"` + AutoRegister bool `json:"autoRegister,omitempty" db:"auto_register"` AllowAutoCreation bool `json:"allowAutoCreation,omitempty" db:"allow_auto_creation"` AllowAutoUpdate bool `json:"allowAutoUpdate,omitempty" db:"allow_auto_update"` AllowLinking bool `json:"allowLinking,omitempty" db:"allow_linking"` + AllowAutoLinking bool `json:"allowAutoLinking,omitempty" db:"allow_auto_linking"` StylingType int16 `json:"stylingType,omitempty" db:"styling_type"` Payload *string `json:"payload,omitempty" db:"payload"` CreatedAt time.Time `json:"createdAt,omitempty" db:"created_at"` @@ -107,9 +109,11 @@ type idProviderColumns interface { NameColumn() database.Column TypeColumn() database.Column AllowCreationColumn() database.Column + AutoRegisterColumn() database.Column AllowAutoCreationColumn() database.Column AllowAutoUpdateColumn() database.Column AllowLinkingColumn() database.Column + AllowAutoLinkingColumn() database.Column StylingTypeColumn() database.Column PayloadColumn() database.Column CreatedAtColumn() database.Column @@ -123,10 +127,12 @@ type idProviderConditions interface { StateCondition(state IDPState) database.Condition NameCondition(name string) IDPIdentifierCondition TypeCondition(typee IDPType) database.Condition + AutoRegisterCondition(allow bool) database.Condition AllowCreationCondition(allow bool) database.Condition AllowAutoCreationCondition(allow bool) database.Condition AllowAutoUpdateCondition(allow bool) database.Condition AllowLinkingCondition(allow bool) database.Condition + AllowAutoLinkingCondition(allow bool) database.Condition StylingTypeCondition(style int16) database.Condition PayloadCondition(payload string) database.Condition } @@ -135,9 +141,11 @@ type idProviderChanges interface { SetName(name string) database.Change SetState(state IDPState) database.Change SetAllowCreation(allow bool) database.Change + SetAutoRegister(allow bool) database.Change SetAllowAutoCreation(allow bool) database.Change SetAllowAutoUpdate(allow bool) database.Change SetAllowLinking(allow bool) database.Change + SetAutoAllowLinking(allow bool) database.Change SetStylingType(stylingType int16) database.Change SetPayload(payload string) database.Change } diff --git a/backend/v3/storage/database/dialect/postgres/migration/003_identity_providers_table/up.sql b/backend/v3/storage/database/dialect/postgres/migration/003_identity_providers_table/up.sql index c91697cf71..869abd97cd 100644 --- a/backend/v3/storage/database/dialect/postgres/migration/003_identity_providers_table/up.sql +++ b/backend/v3/storage/database/dialect/postgres/migration/003_identity_providers_table/up.sql @@ -22,10 +22,12 @@ CREATE TABLE zitadel.identity_providers ( , state zitadel.idp_state NOT NULL DEFAULT 'active' , name TEXT NOT NULL CHECK (name <> '') , type zitadel.idp_type -- NOT NULL + , auto_register BOOLEAN NOT NULL DEFAULT TRUE , allow_creation BOOLEAN NOT NULL DEFAULT TRUE , allow_auto_creation BOOLEAN NOT NULL DEFAULT TRUE , allow_auto_update BOOLEAN NOT NULL DEFAULT TRUE , allow_linking BOOLEAN NOT NULL DEFAULT TRUE + , allow_auto_linking BOOLEAN NOT NULL DEFAULT TRUE , styling_type SMALLINT , payload JSONB diff --git a/backend/v3/storage/database/events_testing/id_provider_test.go b/backend/v3/storage/database/events_testing/id_provider_test.go index a0252d9a72..8d9cdf0f1e 100644 --- a/backend/v3/storage/database/events_testing/id_provider_test.go +++ b/backend/v3/storage/database/events_testing/id_provider_test.go @@ -56,7 +56,7 @@ func TestServer_TestIDProviderReduces(t *testing.T) { assert.Equal(t, name, idp.Name) assert.Equal(t, instanceID, idp.InstanceID) assert.Equal(t, domain.IDPStateActive.String(), idp.State) - assert.Equal(t, true, idp.AllowAutoCreation) + assert.Equal(t, true, idp.AutoRegister) assert.Equal(t, int16(idp_grpc.IDPStylingType_STYLING_TYPE_GOOGLE), idp.StylingType) assert.WithinRange(t, idp.UpdatedAt, beforeCreate, afterCreate) assert.WithinRange(t, idp.CreatedAt, beforeCreate, afterCreate) @@ -93,7 +93,7 @@ func TestServer_TestIDProviderReduces(t *testing.T) { idpRepo := repository.IDProviderRepository(pool) - retryDuration, tick := integration.WaitForAndTickWithMaxDuration(CTX, time.Minute) + retryDuration, tick := integration.WaitForAndTickWithMaxDuration(CTX, time.Second*5) assert.EventuallyWithT(t, func(t *assert.CollectT) { idp, err := idpRepo.Get(CTX, idpRepo.NameCondition(name), @@ -105,7 +105,7 @@ func TestServer_TestIDProviderReduces(t *testing.T) { // event iam.idp.config.changed assert.Equal(t, addOIDC.IdpId, idp.ID) assert.Equal(t, name, idp.Name) - assert.Equal(t, false, idp.AllowAutoCreation) + assert.Equal(t, false, idp.AutoRegister) assert.Equal(t, int16(idp_grpc.IDPStylingType_STYLING_TYPE_UNSPECIFIED), idp.StylingType) assert.WithinRange(t, idp.UpdatedAt, beforeCreate, afterCreate) }, retryDuration, tick) diff --git a/backend/v3/storage/database/repository/id_provider.go b/backend/v3/storage/database/repository/id_provider.go index 504c6fd744..db343a00d1 100644 --- a/backend/v3/storage/database/repository/id_provider.go +++ b/backend/v3/storage/database/repository/id_provider.go @@ -191,6 +191,10 @@ func (idProvider) TypeColumn() database.Column { return database.NewColumn("type") } +func (idProvider) AutoRegisterColumn() database.Column { + return database.NewColumn("auto_register") +} + func (idProvider) AllowCreationColumn() database.Column { return database.NewColumn("allow_creation") } @@ -207,6 +211,10 @@ func (idProvider) AllowLinkingColumn() database.Column { return database.NewColumn("allow_linking") } +func (idProvider) AllowAutoLinkingColumn() database.Column { + return database.NewColumn("allow_auto_linking") +} + func (idProvider) StylingTypeColumn() database.Column { return database.NewColumn("styling_type") } @@ -254,6 +262,10 @@ func (i idProvider) TypeCondition(typee domain.IDPType) database.Condition { return database.NewTextCondition(i.TypeColumn(), database.TextOperationEqual, typee.String()) } +func (i idProvider) AutoRegisterCondition(allow bool) database.Condition { + return database.NewBooleanCondition(i.AutoRegisterColumn(), allow) +} + func (i idProvider) AllowCreationCondition(allow bool) database.Condition { return database.NewBooleanCondition(i.AllowCreationColumn(), allow) } @@ -270,6 +282,10 @@ func (i idProvider) AllowLinkingCondition(allow bool) database.Condition { return database.NewBooleanCondition(i.AllowLinkingColumn(), allow) } +func (i idProvider) AllowAutoLinkingCondition(allow bool) database.Condition { + return database.NewBooleanCondition(i.AllowAutoLinkingColumn(), allow) +} + func (i idProvider) StylingTypeCondition(style int16) database.Condition { return database.NewNumberCondition(i.StylingTypeColumn(), database.NumberOperationEqual, style) } @@ -294,6 +310,10 @@ func (i idProvider) SetAllowCreation(allow bool) database.Change { return database.NewChange(i.AllowCreationColumn(), allow) } +func (i idProvider) SetAutoRegister(allow bool) database.Change { + return database.NewChange(i.AutoRegisterColumn(), allow) +} + func (i idProvider) SetAllowAutoCreation(allow bool) database.Change { return database.NewChange(i.AllowAutoCreationColumn(), allow) } @@ -306,6 +326,10 @@ func (i idProvider) SetAllowLinking(allow bool) database.Change { return database.NewChange(i.AllowLinkingColumn(), allow) } +func (i idProvider) SetAutoAllowLinking(allow bool) database.Change { + return database.NewChange(i.AllowAutoLinkingColumn(), allow) +} + func (i idProvider) SetStylingType(stylingType int16) database.Change { return database.NewChange(i.StylingTypeColumn(), stylingType) } diff --git a/internal/query/projection/idp_relational.go b/internal/query/projection/idp_relational.go index db7dec1cf1..39e4e4bad7 100644 --- a/internal/query/projection/idp_relational.go +++ b/internal/query/projection/idp_relational.go @@ -15,10 +15,10 @@ import ( ) const ( - IDPRelationalTable = "zitadel.identity_providers" - IDPRelationalOrgIdCol = "org_id" - IDPRelationalAllowAutoCreationCol = "allow_auto_creation" - IDPRelationalPayloadCol = "payload" + IDPRelationalTable = "zitadel.identity_providers" + IDPRelationalOrgIdCol = "org_id" + IDPRelationalAutoRegisterCol = "auto_register" + IDPRelationalPayloadCol = "payload" ) type idpRelationalProjection struct { @@ -103,8 +103,7 @@ func (p *idpRelationalProjection) reduceIDPRelationalAdded(event eventstore.Even handler.NewCol(IDPStateCol, domain.IDPStateActive.String()), handler.NewCol(IDPNameCol, e.Name), handler.NewCol(IDPStylingTypeCol, e.StylingType), - handler.NewCol(IDPRelationalAllowAutoCreationCol, e.AutoRegister), - // handler.NewCol(IDPTypeCol, domain.IDPTypeOIDC.String()), + handler.NewCol(IDPRelationalAutoRegisterCol, e.AutoRegister), handler.NewCol(CreatedAt, e.CreationDate()), }, ), nil @@ -118,13 +117,13 @@ func (p *idpRelationalProjection) reduceIDPRelationalChanged(event eventstore.Ev cols := make([]handler.Column, 0, 5) if e.Name != nil { - cols = append(cols, handler.NewCol(IDPNameCol, e.Name)) + cols = append(cols, handler.NewCol(IDPNameCol, *e.Name)) } if e.StylingType != nil { - cols = append(cols, handler.NewCol(IDPStylingTypeCol, e.StylingType)) + cols = append(cols, handler.NewCol(IDPStylingTypeCol, *e.StylingType)) } if e.AutoRegister != nil { - cols = append(cols, handler.NewCol(IDPRelationalAllowAutoCreationCol, e.AutoRegister)) + cols = append(cols, handler.NewCol(IDPRelationalAutoRegisterCol, *e.AutoRegister)) } if len(cols) == 0 { return handler.NewNoOpStatement(e), nil diff --git a/internal/query/projection/idp_template_relational.go b/internal/query/projection/idp_template_relational.go new file mode 100644 index 0000000000..2e0576176e --- /dev/null +++ b/internal/query/projection/idp_template_relational.go @@ -0,0 +1,2176 @@ +package projection + +import ( + "context" + + "github.com/zitadel/zitadel/backend/v3/storage/database/dialect/postgres" + "github.com/zitadel/zitadel/backend/v3/storage/database/repository" + + "github.com/zitadel/zitadel/backend/v3/domain" + "github.com/zitadel/zitadel/internal/eventstore/handler/v2" + "github.com/zitadel/zitadel/internal/repository/instance" +) + +type idpTemplateRelationalProjection struct { + idpRepo domain.IDProviderRepository +} + +func newIDPTemplateRelationalProjection(ctx context.Context, config handler.Config) *handler.Handler { + client := postgres.PGxPool(config.Client.Pool) + idpRepo := repository.IDProviderRepository(client) + return handler.NewHandler(ctx, &config, &idpTemplateRelationalProjection{ + idpRepo: idpRepo, + }) +} + +func (*idpTemplateRelationalProjection) Name() string { + return IDPRelationalTable + // return IDPTemplateTable +} + +func (p *idpTemplateRelationalProjection) Reducers() []handler.AggregateReducer { + return []handler.AggregateReducer{ + { + Aggregate: instance.AggregateType, + EventReducers: []handler.EventReducer{ + { + Event: instance.OAuthIDPAddedEventType, + Reduce: p.reduceOAuthIDPAdded, + }, + // { + // Event: instance.OAuthIDPChangedEventType, + // Reduce: p.reduceOAuthIDPChanged, + // }, + // { + // Event: instance.OIDCIDPAddedEventType, + // Reduce: p.reduceOIDCIDPAdded, + // }, + // { + // Event: instance.OIDCIDPChangedEventType, + // Reduce: p.reduceOIDCIDPChanged, + // }, + // { + // Event: instance.OIDCIDPMigratedAzureADEventType, + // Reduce: p.reduceOIDCIDPMigratedAzureAD, + // }, + // { + // Event: instance.OIDCIDPMigratedGoogleEventType, + // Reduce: p.reduceOIDCIDPMigratedGoogle, + // }, + // { + // Event: instance.JWTIDPAddedEventType, + // Reduce: p.reduceJWTIDPAdded, + // }, + // { + // Event: instance.JWTIDPChangedEventType, + // Reduce: p.reduceJWTIDPChanged, + // }, + // { + // Event: instance.IDPConfigAddedEventType, + // Reduce: p.reduceOldConfigAdded, + // }, + // { + // Event: instance.IDPConfigChangedEventType, + // Reduce: p.reduceOldConfigChanged, + // }, + // { + // Event: instance.IDPOIDCConfigAddedEventType, + // Reduce: p.reduceOldOIDCConfigAdded, + // }, + // { + // Event: instance.IDPOIDCConfigChangedEventType, + // Reduce: p.reduceOldOIDCConfigChanged, + // }, + // { + // Event: instance.IDPJWTConfigAddedEventType, + // Reduce: p.reduceOldJWTConfigAdded, + // }, + // { + // Event: instance.IDPJWTConfigChangedEventType, + // Reduce: p.reduceOldJWTConfigChanged, + // }, + // { + // Event: instance.AzureADIDPAddedEventType, + // Reduce: p.reduceAzureADIDPAdded, + // }, + // { + // Event: instance.AzureADIDPChangedEventType, + // Reduce: p.reduceAzureADIDPChanged, + // }, + // { + // Event: instance.GitHubIDPAddedEventType, + // Reduce: p.reduceGitHubIDPAdded, + // }, + // { + // Event: instance.GitHubIDPChangedEventType, + // Reduce: p.reduceGitHubIDPChanged, + // }, + // { + // Event: instance.GitHubEnterpriseIDPAddedEventType, + // Reduce: p.reduceGitHubEnterpriseIDPAdded, + // }, + // { + // Event: instance.GitHubEnterpriseIDPChangedEventType, + // Reduce: p.reduceGitHubEnterpriseIDPChanged, + // }, + // { + // Event: instance.GitLabIDPAddedEventType, + // Reduce: p.reduceGitLabIDPAdded, + // }, + // { + // Event: instance.GitLabIDPChangedEventType, + // Reduce: p.reduceGitLabIDPChanged, + // }, + // { + // Event: instance.GitLabSelfHostedIDPAddedEventType, + // Reduce: p.reduceGitLabSelfHostedIDPAdded, + // }, + // { + // Event: instance.GitLabSelfHostedIDPChangedEventType, + // Reduce: p.reduceGitLabSelfHostedIDPChanged, + // }, + // { + // Event: instance.GoogleIDPAddedEventType, + // Reduce: p.reduceGoogleIDPAdded, + // }, + // { + // Event: instance.GoogleIDPChangedEventType, + // Reduce: p.reduceGoogleIDPChanged, + // }, + // { + // Event: instance.LDAPIDPAddedEventType, + // Reduce: p.reduceLDAPIDPAdded, + // }, + // { + // Event: instance.LDAPIDPChangedEventType, + // Reduce: p.reduceLDAPIDPChanged, + // }, + // { + // Event: instance.AppleIDPAddedEventType, + // Reduce: p.reduceAppleIDPAdded, + // }, + // { + // Event: instance.AppleIDPChangedEventType, + // Reduce: p.reduceAppleIDPChanged, + // }, + // { + // Event: instance.SAMLIDPAddedEventType, + // Reduce: p.reduceSAMLIDPAdded, + // }, + // { + // Event: instance.SAMLIDPChangedEventType, + // Reduce: p.reduceSAMLIDPChanged, + // }, + // { + // Event: instance.IDPConfigRemovedEventType, + // Reduce: p.reduceIDPConfigRemoved, + // }, + // { + // Event: instance.IDPRemovedEventType, + // Reduce: p.reduceIDPRemoved, + // }, + // { + // Event: instance.InstanceRemovedEventType, + // Reduce: reduceInstanceRemovedHelper(IDPTemplateInstanceIDCol), + // }, + // }, + // }, + // { + // Aggregate: org.AggregateType, + // EventReducers: []handler.EventReducer{ + // { + // Event: org.OAuthIDPAddedEventType, + // Reduce: p.reduceOAuthIDPAdded, + // }, + // { + // Event: org.OAuthIDPChangedEventType, + // Reduce: p.reduceOAuthIDPChanged, + // }, + // { + // Event: org.OIDCIDPAddedEventType, + // Reduce: p.reduceOIDCIDPAdded, + // }, + // { + // Event: org.OIDCIDPChangedEventType, + // Reduce: p.reduceOIDCIDPChanged, + // }, + // { + // Event: org.OIDCIDPMigratedAzureADEventType, + // Reduce: p.reduceOIDCIDPMigratedAzureAD, + // }, + // { + // Event: org.OIDCIDPMigratedGoogleEventType, + // Reduce: p.reduceOIDCIDPMigratedGoogle, + // }, + // { + // Event: org.JWTIDPAddedEventType, + // Reduce: p.reduceJWTIDPAdded, + // }, + // { + // Event: org.JWTIDPChangedEventType, + // Reduce: p.reduceJWTIDPChanged, + // }, + // { + // Event: org.IDPConfigAddedEventType, + // Reduce: p.reduceOldConfigAdded, + // }, + // { + // Event: org.IDPConfigChangedEventType, + // Reduce: p.reduceOldConfigChanged, + // }, + // { + // Event: org.IDPOIDCConfigAddedEventType, + // Reduce: p.reduceOldOIDCConfigAdded, + // }, + // { + // Event: org.IDPOIDCConfigChangedEventType, + // Reduce: p.reduceOldOIDCConfigChanged, + // }, + // { + // Event: org.IDPJWTConfigAddedEventType, + // Reduce: p.reduceOldJWTConfigAdded, + // }, + // { + // Event: org.IDPJWTConfigChangedEventType, + // Reduce: p.reduceOldJWTConfigChanged, + // }, + // { + // Event: org.AzureADIDPAddedEventType, + // Reduce: p.reduceAzureADIDPAdded, + // }, + // { + // Event: org.AzureADIDPChangedEventType, + // Reduce: p.reduceAzureADIDPChanged, + // }, + // { + // Event: org.GitHubIDPAddedEventType, + // Reduce: p.reduceGitHubIDPAdded, + // }, + // { + // Event: org.GitHubIDPChangedEventType, + // Reduce: p.reduceGitHubIDPChanged, + // }, + // { + // Event: org.GitHubEnterpriseIDPAddedEventType, + // Reduce: p.reduceGitHubEnterpriseIDPAdded, + // }, + // { + // Event: org.GitHubEnterpriseIDPChangedEventType, + // Reduce: p.reduceGitHubEnterpriseIDPChanged, + // }, + // { + // Event: org.GitLabIDPAddedEventType, + // Reduce: p.reduceGitLabIDPAdded, + // }, + // { + // Event: org.GitLabIDPChangedEventType, + // Reduce: p.reduceGitLabIDPChanged, + // }, + // { + // Event: org.GitLabSelfHostedIDPAddedEventType, + // Reduce: p.reduceGitLabSelfHostedIDPAdded, + // }, + // { + // Event: org.GitLabSelfHostedIDPChangedEventType, + // Reduce: p.reduceGitLabSelfHostedIDPChanged, + // }, + // { + // Event: org.GoogleIDPAddedEventType, + // Reduce: p.reduceGoogleIDPAdded, + // }, + // { + // Event: org.GoogleIDPChangedEventType, + // Reduce: p.reduceGoogleIDPChanged, + // }, + // { + // Event: org.LDAPIDPAddedEventType, + // Reduce: p.reduceLDAPIDPAdded, + // }, + // { + // Event: org.LDAPIDPChangedEventType, + // Reduce: p.reduceLDAPIDPChanged, + // }, + // { + // Event: org.AppleIDPAddedEventType, + // Reduce: p.reduceAppleIDPAdded, + // }, + // { + // Event: org.AppleIDPChangedEventType, + // Reduce: p.reduceAppleIDPChanged, + // }, + // { + // Event: org.SAMLIDPAddedEventType, + // Reduce: p.reduceSAMLIDPAdded, + // }, + // { + // Event: org.SAMLIDPChangedEventType, + // Reduce: p.reduceSAMLIDPChanged, + // }, + // { + // Event: org.IDPConfigRemovedEventType, + // Reduce: p.reduceIDPConfigRemoved, + // }, + // { + // Event: org.IDPRemovedEventType, + // Reduce: p.reduceIDPRemoved, + // }, + // { + // Event: org.OrgRemovedEventType, + // Reduce: p.reduceOwnerRemoved, + // }, + }, + }, + } +} + +// func (p *idpTemplateProjection) reduceOAuthIDPAdded(event eventstore.Event) (*handler.Statement, error) { +// var idpEvent idp.OAuthIDPAddedEvent +// var idpOwnerType domain.IdentityProviderType +// switch e := event.(type) { +// case *org.OAuthIDPAddedEvent: +// idpEvent = e.OAuthIDPAddedEvent +// idpOwnerType = domain.IdentityProviderTypeOrg +// case *instance.OAuthIDPAddedEvent: +// idpEvent = e.OAuthIDPAddedEvent +// idpOwnerType = domain.IdentityProviderTypeSystem +// default: +// return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-ap9ihb", "reduce.wrong.event.type %v", []eventstore.EventType{org.OAuthIDPAddedEventType, instance.OAuthIDPAddedEventType}) +// } + +// return handler.NewMultiStatement( +// &idpEvent, +// handler.AddCreateStatement( +// []handler.Column{ +// handler.NewCol(IDPTemplateIDCol, idpEvent.ID), +// handler.NewCol(IDPTemplateCreationDateCol, idpEvent.CreationDate()), +// handler.NewCol(IDPTemplateChangeDateCol, idpEvent.CreationDate()), +// handler.NewCol(IDPTemplateSequenceCol, idpEvent.Sequence()), +// handler.NewCol(IDPTemplateResourceOwnerCol, idpEvent.Aggregate().ResourceOwner), +// handler.NewCol(IDPTemplateInstanceIDCol, idpEvent.Aggregate().InstanceID), +// handler.NewCol(IDPTemplateStateCol, domain.IDPStateActive), +// handler.NewCol(IDPTemplateNameCol, idpEvent.Name), +// handler.NewCol(IDPTemplateOwnerTypeCol, idpOwnerType), +// handler.NewCol(IDPTemplateTypeCol, domain.IDPTypeOAuth), +// handler.NewCol(IDPTemplateIsCreationAllowedCol, idpEvent.IsCreationAllowed), +// handler.NewCol(IDPTemplateIsLinkingAllowedCol, idpEvent.IsLinkingAllowed), +// handler.NewCol(IDPTemplateIsAutoCreationCol, idpEvent.IsAutoCreation), +// handler.NewCol(IDPTemplateIsAutoUpdateCol, idpEvent.IsAutoUpdate), +// handler.NewCol(IDPTemplateAutoLinkingCol, idpEvent.AutoLinkingOption), +// }, +// ), +// handler.AddCreateStatement( +// []handler.Column{ +// handler.NewCol(OAuthIDCol, idpEvent.ID), +// handler.NewCol(OAuthInstanceIDCol, idpEvent.Aggregate().InstanceID), +// handler.NewCol(OAuthClientIDCol, idpEvent.ClientID), +// handler.NewCol(OAuthClientSecretCol, idpEvent.ClientSecret), +// handler.NewCol(OAuthAuthorizationEndpointCol, idpEvent.AuthorizationEndpoint), +// handler.NewCol(OAuthTokenEndpointCol, idpEvent.TokenEndpoint), +// handler.NewCol(OAuthUserEndpointCol, idpEvent.UserEndpoint), +// handler.NewCol(OAuthScopesCol, database.TextArray[string](idpEvent.Scopes)), +// handler.NewCol(OAuthIDAttributeCol, idpEvent.IDAttribute), +// handler.NewCol(OAuthUsePKCECol, idpEvent.UsePKCE), +// }, +// handler.WithTableSuffix(IDPTemplateOAuthSuffix), +// ), +// ), nil +// } + +// func (p *idpTemplateProjection) reduceOAuthIDPChanged(event eventstore.Event) (*handler.Statement, error) { +// var idpEvent idp.OAuthIDPChangedEvent +// switch e := event.(type) { +// case *org.OAuthIDPChangedEvent: +// idpEvent = e.OAuthIDPChangedEvent +// case *instance.OAuthIDPChangedEvent: +// idpEvent = e.OAuthIDPChangedEvent +// default: +// return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-p1582ks", "reduce.wrong.event.type %v", []eventstore.EventType{org.OAuthIDPChangedEventType, instance.OAuthIDPChangedEventType}) +// } + +// ops := make([]func(eventstore.Event) handler.Exec, 0, 2) +// ops = append(ops, +// handler.AddUpdateStatement( +// reduceIDPChangedTemplateColumns(idpEvent.Name, idpEvent.CreationDate(), idpEvent.Sequence(), idpEvent.OptionChanges), +// []handler.Condition{ +// handler.NewCond(IDPTemplateIDCol, idpEvent.ID), +// handler.NewCond(IDPTemplateInstanceIDCol, idpEvent.Aggregate().InstanceID), +// }, +// ), +// ) +// oauthCols := reduceOAuthIDPChangedColumns(idpEvent) +// if len(oauthCols) > 0 { +// ops = append(ops, +// handler.AddUpdateStatement( +// oauthCols, +// []handler.Condition{ +// handler.NewCond(OAuthIDCol, idpEvent.ID), +// handler.NewCond(OAuthInstanceIDCol, idpEvent.Aggregate().InstanceID), +// }, +// handler.WithTableSuffix(IDPTemplateOAuthSuffix), +// ), +// ) +// } + +// return handler.NewMultiStatement( +// &idpEvent, +// ops..., +// ), nil +// } + +// func (p *idpTemplateProjection) reduceOIDCIDPAdded(event eventstore.Event) (*handler.Statement, error) { +// var idpEvent idp.OIDCIDPAddedEvent +// var idpOwnerType domain.IdentityProviderType +// switch e := event.(type) { +// case *org.OIDCIDPAddedEvent: +// idpEvent = e.OIDCIDPAddedEvent +// idpOwnerType = domain.IdentityProviderTypeOrg +// case *instance.OIDCIDPAddedEvent: +// idpEvent = e.OIDCIDPAddedEvent +// idpOwnerType = domain.IdentityProviderTypeSystem +// default: +// return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-9s02m1", "reduce.wrong.event.type %v", []eventstore.EventType{org.OIDCIDPAddedEventType, instance.OIDCIDPAddedEventType}) +// } + +// return handler.NewMultiStatement( +// &idpEvent, +// handler.AddCreateStatement( +// []handler.Column{ +// handler.NewCol(IDPTemplateIDCol, idpEvent.ID), +// handler.NewCol(IDPTemplateCreationDateCol, idpEvent.CreationDate()), +// handler.NewCol(IDPTemplateChangeDateCol, idpEvent.CreationDate()), +// handler.NewCol(IDPTemplateSequenceCol, idpEvent.Sequence()), +// handler.NewCol(IDPTemplateResourceOwnerCol, idpEvent.Aggregate().ResourceOwner), +// handler.NewCol(IDPTemplateInstanceIDCol, idpEvent.Aggregate().InstanceID), +// handler.NewCol(IDPTemplateStateCol, domain.IDPStateActive), +// handler.NewCol(IDPTemplateNameCol, idpEvent.Name), +// handler.NewCol(IDPTemplateOwnerTypeCol, idpOwnerType), +// handler.NewCol(IDPTemplateTypeCol, domain.IDPTypeOIDC), +// handler.NewCol(IDPTemplateIsCreationAllowedCol, idpEvent.IsCreationAllowed), +// handler.NewCol(IDPTemplateIsLinkingAllowedCol, idpEvent.IsLinkingAllowed), +// handler.NewCol(IDPTemplateIsAutoCreationCol, idpEvent.IsAutoCreation), +// handler.NewCol(IDPTemplateIsAutoUpdateCol, idpEvent.IsAutoUpdate), +// handler.NewCol(IDPTemplateAutoLinkingCol, idpEvent.AutoLinkingOption), +// }, +// ), +// handler.AddCreateStatement( +// []handler.Column{ +// handler.NewCol(OIDCIDCol, idpEvent.ID), +// handler.NewCol(OIDCInstanceIDCol, idpEvent.Aggregate().InstanceID), +// handler.NewCol(OIDCIssuerCol, idpEvent.Issuer), +// handler.NewCol(OIDCClientIDCol, idpEvent.ClientID), +// handler.NewCol(OIDCClientSecretCol, idpEvent.ClientSecret), +// handler.NewCol(OIDCScopesCol, database.TextArray[string](idpEvent.Scopes)), +// handler.NewCol(OIDCIDTokenMappingCol, idpEvent.IsIDTokenMapping), +// handler.NewCol(OIDCUsePKCECol, idpEvent.UsePKCE), +// }, +// handler.WithTableSuffix(IDPTemplateOIDCSuffix), +// ), +// ), nil +// } + +// func (p *idpTemplateProjection) reduceOIDCIDPChanged(event eventstore.Event) (*handler.Statement, error) { +// var idpEvent idp.OIDCIDPChangedEvent +// switch e := event.(type) { +// case *org.OIDCIDPChangedEvent: +// idpEvent = e.OIDCIDPChangedEvent +// case *instance.OIDCIDPChangedEvent: +// idpEvent = e.OIDCIDPChangedEvent +// default: +// return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-p1582ks", "reduce.wrong.event.type %v", []eventstore.EventType{org.OIDCIDPChangedEventType, instance.OIDCIDPChangedEventType}) +// } + +// ops := make([]func(eventstore.Event) handler.Exec, 0, 2) +// ops = append(ops, +// handler.AddUpdateStatement( +// reduceIDPChangedTemplateColumns(idpEvent.Name, idpEvent.CreationDate(), idpEvent.Sequence(), idpEvent.OptionChanges), +// []handler.Condition{ +// handler.NewCond(IDPTemplateIDCol, idpEvent.ID), +// handler.NewCond(IDPTemplateInstanceIDCol, idpEvent.Aggregate().InstanceID), +// }, +// ), +// ) +// oidcCols := reduceOIDCIDPChangedColumns(idpEvent) +// if len(oidcCols) > 0 { +// ops = append(ops, +// handler.AddUpdateStatement( +// oidcCols, +// []handler.Condition{ +// handler.NewCond(OIDCIDCol, idpEvent.ID), +// handler.NewCond(OIDCInstanceIDCol, idpEvent.Aggregate().InstanceID), +// }, +// handler.WithTableSuffix(IDPTemplateOIDCSuffix), +// ), +// ) +// } + +// return handler.NewMultiStatement( +// &idpEvent, +// ops..., +// ), nil +// } + +// func (p *idpTemplateProjection) reduceOIDCIDPMigratedAzureAD(event eventstore.Event) (*handler.Statement, error) { +// var idpEvent idp.OIDCIDPMigratedAzureADEvent +// switch e := event.(type) { +// case *org.OIDCIDPMigratedAzureADEvent: +// idpEvent = e.OIDCIDPMigratedAzureADEvent +// case *instance.OIDCIDPMigratedAzureADEvent: +// idpEvent = e.OIDCIDPMigratedAzureADEvent +// default: +// return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-p1582ks", "reduce.wrong.event.type %v", []eventstore.EventType{org.OIDCIDPMigratedAzureADEventType, instance.OIDCIDPMigratedAzureADEventType}) +// } + +// return handler.NewMultiStatement( +// &idpEvent, +// handler.AddUpdateStatement( +// []handler.Column{ +// handler.NewCol(IDPTemplateChangeDateCol, idpEvent.CreationDate()), +// handler.NewCol(IDPTemplateSequenceCol, idpEvent.Sequence()), +// handler.NewCol(IDPTemplateNameCol, idpEvent.Name), +// handler.NewCol(IDPTemplateTypeCol, domain.IDPTypeAzureAD), +// handler.NewCol(IDPTemplateIsCreationAllowedCol, idpEvent.IsCreationAllowed), +// handler.NewCol(IDPTemplateIsLinkingAllowedCol, idpEvent.IsLinkingAllowed), +// handler.NewCol(IDPTemplateIsAutoCreationCol, idpEvent.IsAutoCreation), +// handler.NewCol(IDPTemplateIsAutoUpdateCol, idpEvent.IsAutoUpdate), +// handler.NewCol(IDPTemplateAutoLinkingCol, idpEvent.AutoLinkingOption), +// }, +// []handler.Condition{ +// handler.NewCond(IDPTemplateIDCol, idpEvent.ID), +// handler.NewCond(IDPTemplateInstanceIDCol, idpEvent.Aggregate().InstanceID), +// }, +// ), +// handler.AddDeleteStatement( +// []handler.Condition{ +// handler.NewCond(OIDCIDCol, idpEvent.ID), +// handler.NewCond(OIDCInstanceIDCol, idpEvent.Aggregate().InstanceID), +// }, +// handler.WithTableSuffix(IDPTemplateOIDCSuffix), +// ), +// handler.AddCreateStatement( +// []handler.Column{ +// handler.NewCol(AzureADIDCol, idpEvent.ID), +// handler.NewCol(AzureADInstanceIDCol, idpEvent.Aggregate().InstanceID), +// handler.NewCol(AzureADClientIDCol, idpEvent.ClientID), +// handler.NewCol(AzureADClientSecretCol, idpEvent.ClientSecret), +// handler.NewCol(AzureADScopesCol, database.TextArray[string](idpEvent.Scopes)), +// handler.NewCol(AzureADTenantCol, idpEvent.Tenant), +// handler.NewCol(AzureADIsEmailVerified, idpEvent.IsEmailVerified), +// }, +// handler.WithTableSuffix(IDPTemplateAzureADSuffix), +// ), +// ), nil +// } + +// func (p *idpTemplateProjection) reduceOIDCIDPMigratedGoogle(event eventstore.Event) (*handler.Statement, error) { +// var idpEvent idp.OIDCIDPMigratedGoogleEvent +// switch e := event.(type) { +// case *org.OIDCIDPMigratedGoogleEvent: +// idpEvent = e.OIDCIDPMigratedGoogleEvent +// case *instance.OIDCIDPMigratedGoogleEvent: +// idpEvent = e.OIDCIDPMigratedGoogleEvent +// default: +// return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-p1582ks", "reduce.wrong.event.type %v", []eventstore.EventType{org.OIDCIDPMigratedGoogleEventType, instance.OIDCIDPMigratedGoogleEventType}) +// } + +// return handler.NewMultiStatement( +// &idpEvent, +// handler.AddUpdateStatement( +// []handler.Column{ +// handler.NewCol(IDPTemplateChangeDateCol, idpEvent.CreationDate()), +// handler.NewCol(IDPTemplateSequenceCol, idpEvent.Sequence()), +// handler.NewCol(IDPTemplateNameCol, idpEvent.Name), +// handler.NewCol(IDPTemplateTypeCol, domain.IDPTypeGoogle), +// handler.NewCol(IDPTemplateIsCreationAllowedCol, idpEvent.IsCreationAllowed), +// handler.NewCol(IDPTemplateIsLinkingAllowedCol, idpEvent.IsLinkingAllowed), +// handler.NewCol(IDPTemplateIsAutoCreationCol, idpEvent.IsAutoCreation), +// handler.NewCol(IDPTemplateIsAutoUpdateCol, idpEvent.IsAutoUpdate), +// handler.NewCol(IDPTemplateAutoLinkingCol, idpEvent.AutoLinkingOption), +// }, +// []handler.Condition{ +// handler.NewCond(IDPTemplateIDCol, idpEvent.ID), +// handler.NewCond(IDPTemplateInstanceIDCol, idpEvent.Aggregate().InstanceID), +// }, +// ), +// handler.AddDeleteStatement( +// []handler.Condition{ +// handler.NewCond(OIDCIDCol, idpEvent.ID), +// handler.NewCond(OIDCInstanceIDCol, idpEvent.Aggregate().InstanceID), +// }, +// handler.WithTableSuffix(IDPTemplateOIDCSuffix), +// ), +// handler.AddCreateStatement( +// []handler.Column{ +// handler.NewCol(GoogleIDCol, idpEvent.ID), +// handler.NewCol(GoogleInstanceIDCol, idpEvent.Aggregate().InstanceID), +// handler.NewCol(GoogleClientIDCol, idpEvent.ClientID), +// handler.NewCol(GoogleClientSecretCol, idpEvent.ClientSecret), +// handler.NewCol(GoogleScopesCol, database.TextArray[string](idpEvent.Scopes)), +// }, +// handler.WithTableSuffix(IDPTemplateGoogleSuffix), +// ), +// ), nil +// } + +// func (p *idpTemplateProjection) reduceJWTIDPAdded(event eventstore.Event) (*handler.Statement, error) { +// var idpEvent idp.JWTIDPAddedEvent +// var idpOwnerType domain.IdentityProviderType +// switch e := event.(type) { +// case *org.JWTIDPAddedEvent: +// idpEvent = e.JWTIDPAddedEvent +// idpOwnerType = domain.IdentityProviderTypeOrg +// case *instance.JWTIDPAddedEvent: +// idpEvent = e.JWTIDPAddedEvent +// idpOwnerType = domain.IdentityProviderTypeSystem +// default: +// return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-xopi2s", "reduce.wrong.event.type %v", []eventstore.EventType{org.JWTIDPAddedEventType, instance.JWTIDPAddedEventType}) +// } + +// return handler.NewMultiStatement( +// &idpEvent, +// handler.AddCreateStatement( +// []handler.Column{ +// handler.NewCol(IDPTemplateIDCol, idpEvent.ID), +// handler.NewCol(IDPTemplateCreationDateCol, idpEvent.CreationDate()), +// handler.NewCol(IDPTemplateChangeDateCol, idpEvent.CreationDate()), +// handler.NewCol(IDPTemplateSequenceCol, idpEvent.Sequence()), +// handler.NewCol(IDPTemplateResourceOwnerCol, idpEvent.Aggregate().ResourceOwner), +// handler.NewCol(IDPTemplateInstanceIDCol, idpEvent.Aggregate().InstanceID), +// handler.NewCol(IDPTemplateStateCol, domain.IDPStateActive), +// handler.NewCol(IDPTemplateNameCol, idpEvent.Name), +// handler.NewCol(IDPTemplateOwnerTypeCol, idpOwnerType), +// handler.NewCol(IDPTemplateTypeCol, domain.IDPTypeJWT), +// handler.NewCol(IDPTemplateIsCreationAllowedCol, idpEvent.IsCreationAllowed), +// handler.NewCol(IDPTemplateIsLinkingAllowedCol, idpEvent.IsLinkingAllowed), +// handler.NewCol(IDPTemplateIsAutoCreationCol, idpEvent.IsAutoCreation), +// handler.NewCol(IDPTemplateIsAutoUpdateCol, idpEvent.IsAutoUpdate), +// handler.NewCol(IDPTemplateAutoLinkingCol, idpEvent.AutoLinkingOption), +// }, +// ), +// handler.AddCreateStatement( +// []handler.Column{ +// handler.NewCol(JWTIDCol, idpEvent.ID), +// handler.NewCol(JWTInstanceIDCol, idpEvent.Aggregate().InstanceID), +// handler.NewCol(JWTIssuerCol, idpEvent.Issuer), +// handler.NewCol(JWTEndpointCol, idpEvent.JWTEndpoint), +// handler.NewCol(JWTKeysEndpointCol, idpEvent.KeysEndpoint), +// handler.NewCol(JWTHeaderNameCol, idpEvent.HeaderName), +// }, +// handler.WithTableSuffix(IDPTemplateJWTSuffix), +// ), +// ), nil +// } + +// func (p *idpTemplateProjection) reduceJWTIDPChanged(event eventstore.Event) (*handler.Statement, error) { +// var idpEvent idp.JWTIDPChangedEvent +// switch e := event.(type) { +// case *org.JWTIDPChangedEvent: +// idpEvent = e.JWTIDPChangedEvent +// case *instance.JWTIDPChangedEvent: +// idpEvent = e.JWTIDPChangedEvent +// default: +// return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-p1582ks", "reduce.wrong.event.type %v", []eventstore.EventType{org.JWTIDPChangedEventType, instance.JWTIDPChangedEventType}) +// } + +// ops := make([]func(eventstore.Event) handler.Exec, 0, 2) +// ops = append(ops, +// handler.AddUpdateStatement( +// reduceIDPChangedTemplateColumns(idpEvent.Name, idpEvent.CreationDate(), idpEvent.Sequence(), idpEvent.OptionChanges), +// []handler.Condition{ +// handler.NewCond(IDPTemplateIDCol, idpEvent.ID), +// handler.NewCond(IDPTemplateInstanceIDCol, idpEvent.Aggregate().InstanceID), +// }, +// ), +// ) +// jwtCols := reduceJWTIDPChangedColumns(idpEvent) +// if len(jwtCols) > 0 { +// ops = append(ops, +// handler.AddUpdateStatement( +// jwtCols, +// []handler.Condition{ +// handler.NewCond(JWTIDCol, idpEvent.ID), +// handler.NewCond(JWTInstanceIDCol, idpEvent.Aggregate().InstanceID), +// }, +// handler.WithTableSuffix(IDPTemplateJWTSuffix), +// ), +// ) +// } + +// return handler.NewMultiStatement( +// &idpEvent, +// ops..., +// ), nil +// } + +// func (p *idpTemplateProjection) reduceOldConfigAdded(event eventstore.Event) (*handler.Statement, error) { +// var idpEvent idpconfig.IDPConfigAddedEvent +// var idpOwnerType domain.IdentityProviderType +// switch e := event.(type) { +// case *org.IDPConfigAddedEvent: +// idpEvent = e.IDPConfigAddedEvent +// idpOwnerType = domain.IdentityProviderTypeOrg +// case *instance.IDPConfigAddedEvent: +// idpEvent = e.IDPConfigAddedEvent +// idpOwnerType = domain.IdentityProviderTypeSystem +// default: +// return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-ADfeg", "reduce.wrong.event.type %v", []eventstore.EventType{org.IDPConfigAddedEventType, instance.IDPConfigAddedEventType}) +// } + +// return handler.NewCreateStatement( +// event, +// []handler.Column{ +// handler.NewCol(IDPTemplateIDCol, idpEvent.ConfigID), +// handler.NewCol(IDPTemplateCreationDateCol, idpEvent.CreationDate()), +// handler.NewCol(IDPTemplateChangeDateCol, idpEvent.CreationDate()), +// handler.NewCol(IDPTemplateSequenceCol, idpEvent.Sequence()), +// handler.NewCol(IDPTemplateResourceOwnerCol, idpEvent.Aggregate().ResourceOwner), +// handler.NewCol(IDPTemplateInstanceIDCol, idpEvent.Aggregate().InstanceID), +// handler.NewCol(IDPTemplateStateCol, domain.IDPStateActive), +// handler.NewCol(IDPTemplateNameCol, idpEvent.Name), +// handler.NewCol(IDPTemplateOwnerTypeCol, idpOwnerType), +// handler.NewCol(IDPTemplateTypeCol, domain.IDPTypeUnspecified), +// handler.NewCol(IDPTemplateIsCreationAllowedCol, true), +// handler.NewCol(IDPTemplateIsLinkingAllowedCol, true), +// handler.NewCol(IDPTemplateIsAutoCreationCol, idpEvent.AutoRegister), +// handler.NewCol(IDPTemplateIsAutoUpdateCol, false), +// handler.NewCol(IDPTemplateAutoLinkingCol, domain.AutoLinkingOptionUnspecified), +// }, +// ), nil +// } + +// func (p *idpTemplateProjection) reduceOldConfigChanged(event eventstore.Event) (*handler.Statement, error) { +// var idpEvent idpconfig.IDPConfigChangedEvent +// switch e := event.(type) { +// case *org.IDPConfigChangedEvent: +// idpEvent = e.IDPConfigChangedEvent +// case *instance.IDPConfigChangedEvent: +// idpEvent = e.IDPConfigChangedEvent +// default: +// return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-SAfg2", "reduce.wrong.event.type %v", []eventstore.EventType{org.IDPConfigChangedEventType, instance.IDPConfigChangedEventType}) +// } + +// cols := make([]handler.Column, 0, 4) +// if idpEvent.Name != nil { +// cols = append(cols, handler.NewCol(IDPTemplateNameCol, *idpEvent.Name)) +// } +// if idpEvent.AutoRegister != nil { +// cols = append(cols, handler.NewCol(IDPTemplateIsAutoCreationCol, *idpEvent.AutoRegister)) +// } +// cols = append(cols, +// handler.NewCol(IDPTemplateChangeDateCol, idpEvent.CreationDate()), +// handler.NewCol(IDPTemplateSequenceCol, idpEvent.Sequence()), +// ) + +// return handler.NewUpdateStatement( +// event, +// cols, +// []handler.Condition{ +// handler.NewCond(IDPTemplateIDCol, idpEvent.ConfigID), +// handler.NewCond(IDPTemplateInstanceIDCol, idpEvent.Aggregate().InstanceID), +// }, +// ), nil +// } + +// func (p *idpTemplateProjection) reduceOldOIDCConfigAdded(event eventstore.Event) (*handler.Statement, error) { +// var idpEvent idpconfig.OIDCConfigAddedEvent +// switch e := event.(type) { +// case *org.IDPOIDCConfigAddedEvent: +// idpEvent = e.OIDCConfigAddedEvent +// case *instance.IDPOIDCConfigAddedEvent: +// idpEvent = e.OIDCConfigAddedEvent +// default: +// return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-ASFdq2", "reduce.wrong.event.type %v", []eventstore.EventType{org.IDPOIDCConfigAddedEventType, instance.IDPOIDCConfigAddedEventType}) +// } + +// return handler.NewMultiStatement( +// &idpEvent, +// handler.AddUpdateStatement( +// []handler.Column{ +// handler.NewCol(IDPTemplateChangeDateCol, idpEvent.CreationDate()), +// handler.NewCol(IDPTemplateSequenceCol, idpEvent.Sequence()), +// handler.NewCol(IDPTemplateTypeCol, domain.IDPTypeOIDC), +// }, +// []handler.Condition{ +// handler.NewCond(IDPTemplateIDCol, idpEvent.IDPConfigID), +// handler.NewCond(IDPTemplateInstanceIDCol, idpEvent.Aggregate().InstanceID), +// }, +// ), +// handler.AddCreateStatement( +// []handler.Column{ +// handler.NewCol(OIDCIDCol, idpEvent.IDPConfigID), +// handler.NewCol(OIDCInstanceIDCol, idpEvent.Aggregate().InstanceID), +// handler.NewCol(OIDCIssuerCol, idpEvent.Issuer), +// handler.NewCol(OIDCClientIDCol, idpEvent.ClientID), +// handler.NewCol(OIDCClientSecretCol, idpEvent.ClientSecret), +// handler.NewCol(OIDCScopesCol, database.TextArray[string](idpEvent.Scopes)), +// handler.NewCol(OIDCIDTokenMappingCol, true), +// handler.NewCol(OIDCUsePKCECol, false), +// }, +// handler.WithTableSuffix(IDPTemplateOIDCSuffix), +// ), +// ), nil +// } + +// func (p *idpTemplateProjection) reduceOldOIDCConfigChanged(event eventstore.Event) (*handler.Statement, error) { +// var idpEvent idpconfig.OIDCConfigChangedEvent +// switch e := event.(type) { +// case *org.IDPOIDCConfigChangedEvent: +// idpEvent = e.OIDCConfigChangedEvent +// case *instance.IDPOIDCConfigChangedEvent: +// idpEvent = e.OIDCConfigChangedEvent +// default: +// return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-p1582ks", "reduce.wrong.event.type %v", []eventstore.EventType{org.OIDCIDPChangedEventType, instance.OIDCIDPChangedEventType}) +// } + +// ops := make([]func(eventstore.Event) handler.Exec, 0, 2) +// ops = append(ops, +// handler.AddUpdateStatement( +// []handler.Column{ +// handler.NewCol(IDPTemplateChangeDateCol, idpEvent.CreationDate()), +// handler.NewCol(IDPTemplateSequenceCol, idpEvent.Sequence()), +// }, +// []handler.Condition{ +// handler.NewCond(IDPTemplateIDCol, idpEvent.IDPConfigID), +// handler.NewCond(IDPTemplateInstanceIDCol, idpEvent.Aggregate().InstanceID), +// }, +// ), +// ) +// oidcCols := make([]handler.Column, 0, 4) +// if idpEvent.ClientID != nil { +// oidcCols = append(oidcCols, handler.NewCol(OIDCClientIDCol, *idpEvent.ClientID)) +// } +// if idpEvent.ClientSecret != nil { +// oidcCols = append(oidcCols, handler.NewCol(OIDCClientSecretCol, *idpEvent.ClientSecret)) +// } +// if idpEvent.Issuer != nil { +// oidcCols = append(oidcCols, handler.NewCol(OIDCIssuerCol, *idpEvent.Issuer)) +// } +// if idpEvent.Scopes != nil { +// oidcCols = append(oidcCols, handler.NewCol(OIDCScopesCol, database.TextArray[string](idpEvent.Scopes))) +// } +// if len(oidcCols) > 0 { +// ops = append(ops, +// handler.AddUpdateStatement( +// oidcCols, +// []handler.Condition{ +// handler.NewCond(OIDCIDCol, idpEvent.IDPConfigID), +// handler.NewCond(OIDCInstanceIDCol, idpEvent.Aggregate().InstanceID), +// }, +// handler.WithTableSuffix(IDPTemplateOIDCSuffix), +// ), +// ) +// } + +// return handler.NewMultiStatement( +// &idpEvent, +// ops..., +// ), nil +// } + +// func (p *idpTemplateProjection) reduceOldJWTConfigAdded(event eventstore.Event) (*handler.Statement, error) { +// var idpEvent idpconfig.JWTConfigAddedEvent +// switch e := event.(type) { +// case *org.IDPJWTConfigAddedEvent: +// idpEvent = e.JWTConfigAddedEvent +// case *instance.IDPJWTConfigAddedEvent: +// idpEvent = e.JWTConfigAddedEvent +// default: +// return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-ASFdq2", "reduce.wrong.event.type %v", []eventstore.EventType{org.IDPJWTConfigAddedEventType, instance.IDPJWTConfigAddedEventType}) +// } + +// return handler.NewMultiStatement( +// &idpEvent, +// handler.AddUpdateStatement( +// []handler.Column{ +// handler.NewCol(IDPTemplateChangeDateCol, idpEvent.CreationDate()), +// handler.NewCol(IDPTemplateSequenceCol, idpEvent.Sequence()), +// handler.NewCol(IDPTemplateTypeCol, domain.IDPTypeJWT), +// }, +// []handler.Condition{ +// handler.NewCond(IDPTemplateIDCol, idpEvent.IDPConfigID), +// handler.NewCond(IDPTemplateInstanceIDCol, idpEvent.Aggregate().InstanceID), +// }, +// ), +// handler.AddCreateStatement( +// []handler.Column{ +// handler.NewCol(JWTIDCol, idpEvent.IDPConfigID), +// handler.NewCol(JWTInstanceIDCol, idpEvent.Aggregate().InstanceID), +// handler.NewCol(JWTIssuerCol, idpEvent.Issuer), +// handler.NewCol(JWTEndpointCol, idpEvent.JWTEndpoint), +// handler.NewCol(JWTKeysEndpointCol, idpEvent.KeysEndpoint), +// handler.NewCol(JWTHeaderNameCol, idpEvent.HeaderName), +// }, +// handler.WithTableSuffix(IDPTemplateJWTSuffix), +// ), +// ), nil +// } + +// func (p *idpTemplateProjection) reduceOldJWTConfigChanged(event eventstore.Event) (*handler.Statement, error) { +// var idpEvent idpconfig.JWTConfigChangedEvent +// switch e := event.(type) { +// case *org.IDPJWTConfigChangedEvent: +// idpEvent = e.JWTConfigChangedEvent +// case *instance.IDPJWTConfigChangedEvent: +// idpEvent = e.JWTConfigChangedEvent +// default: +// return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-p1582ks", "reduce.wrong.event.type %v", []eventstore.EventType{org.JWTIDPChangedEventType, instance.JWTIDPChangedEventType}) +// } + +// ops := make([]func(eventstore.Event) handler.Exec, 0, 2) +// ops = append(ops, +// handler.AddUpdateStatement( +// []handler.Column{ +// handler.NewCol(IDPTemplateChangeDateCol, idpEvent.CreationDate()), +// handler.NewCol(IDPTemplateSequenceCol, idpEvent.Sequence()), +// }, +// []handler.Condition{ +// handler.NewCond(IDPTemplateIDCol, idpEvent.IDPConfigID), +// handler.NewCond(IDPTemplateInstanceIDCol, idpEvent.Aggregate().InstanceID), +// }, +// ), +// ) +// jwtCols := make([]handler.Column, 0, 4) +// if idpEvent.JWTEndpoint != nil { +// jwtCols = append(jwtCols, handler.NewCol(JWTEndpointCol, *idpEvent.JWTEndpoint)) +// } +// if idpEvent.KeysEndpoint != nil { +// jwtCols = append(jwtCols, handler.NewCol(JWTKeysEndpointCol, *idpEvent.KeysEndpoint)) +// } +// if idpEvent.HeaderName != nil { +// jwtCols = append(jwtCols, handler.NewCol(JWTHeaderNameCol, *idpEvent.HeaderName)) +// } +// if idpEvent.Issuer != nil { +// jwtCols = append(jwtCols, handler.NewCol(JWTIssuerCol, *idpEvent.Issuer)) +// } +// if len(jwtCols) > 0 { +// ops = append(ops, +// handler.AddUpdateStatement( +// jwtCols, +// []handler.Condition{ +// handler.NewCond(JWTIDCol, idpEvent.IDPConfigID), +// handler.NewCond(JWTInstanceIDCol, idpEvent.Aggregate().InstanceID), +// }, +// handler.WithTableSuffix(IDPTemplateJWTSuffix), +// ), +// ) +// } + +// return handler.NewMultiStatement( +// &idpEvent, +// ops..., +// ), nil +// } + +// func (p *idpTemplateProjection) reduceAzureADIDPAdded(event eventstore.Event) (*handler.Statement, error) { +// var idpEvent idp.AzureADIDPAddedEvent +// var idpOwnerType domain.IdentityProviderType +// switch e := event.(type) { +// case *org.AzureADIDPAddedEvent: +// idpEvent = e.AzureADIDPAddedEvent +// idpOwnerType = domain.IdentityProviderTypeOrg +// case *instance.AzureADIDPAddedEvent: +// idpEvent = e.AzureADIDPAddedEvent +// idpOwnerType = domain.IdentityProviderTypeSystem +// default: +// return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-x9a022b", "reduce.wrong.event.type %v", []eventstore.EventType{org.AzureADIDPAddedEventType, instance.AzureADIDPAddedEventType}) +// } + +// return handler.NewMultiStatement( +// &idpEvent, +// handler.AddCreateStatement( +// []handler.Column{ +// handler.NewCol(IDPTemplateIDCol, idpEvent.ID), +// handler.NewCol(IDPTemplateCreationDateCol, idpEvent.CreationDate()), +// handler.NewCol(IDPTemplateChangeDateCol, idpEvent.CreationDate()), +// handler.NewCol(IDPTemplateSequenceCol, idpEvent.Sequence()), +// handler.NewCol(IDPTemplateResourceOwnerCol, idpEvent.Aggregate().ResourceOwner), +// handler.NewCol(IDPTemplateInstanceIDCol, idpEvent.Aggregate().InstanceID), +// handler.NewCol(IDPTemplateStateCol, domain.IDPStateActive), +// handler.NewCol(IDPTemplateNameCol, idpEvent.Name), +// handler.NewCol(IDPTemplateOwnerTypeCol, idpOwnerType), +// handler.NewCol(IDPTemplateTypeCol, domain.IDPTypeAzureAD), +// handler.NewCol(IDPTemplateIsCreationAllowedCol, idpEvent.IsCreationAllowed), +// handler.NewCol(IDPTemplateIsLinkingAllowedCol, idpEvent.IsLinkingAllowed), +// handler.NewCol(IDPTemplateIsAutoCreationCol, idpEvent.IsAutoCreation), +// handler.NewCol(IDPTemplateIsAutoUpdateCol, idpEvent.IsAutoUpdate), +// handler.NewCol(IDPTemplateAutoLinkingCol, idpEvent.AutoLinkingOption), +// }, +// ), +// handler.AddCreateStatement( +// []handler.Column{ +// handler.NewCol(AzureADIDCol, idpEvent.ID), +// handler.NewCol(AzureADInstanceIDCol, idpEvent.Aggregate().InstanceID), +// handler.NewCol(AzureADClientIDCol, idpEvent.ClientID), +// handler.NewCol(AzureADClientSecretCol, idpEvent.ClientSecret), +// handler.NewCol(AzureADScopesCol, database.TextArray[string](idpEvent.Scopes)), +// handler.NewCol(AzureADTenantCol, idpEvent.Tenant), +// handler.NewCol(AzureADIsEmailVerified, idpEvent.IsEmailVerified), +// }, +// handler.WithTableSuffix(IDPTemplateAzureADSuffix), +// ), +// ), nil +// } + +// func (p *idpTemplateProjection) reduceAzureADIDPChanged(event eventstore.Event) (*handler.Statement, error) { +// var idpEvent idp.AzureADIDPChangedEvent +// switch e := event.(type) { +// case *org.AzureADIDPChangedEvent: +// idpEvent = e.AzureADIDPChangedEvent +// case *instance.AzureADIDPChangedEvent: +// idpEvent = e.AzureADIDPChangedEvent +// default: +// return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-p1582ks", "reduce.wrong.event.type %v", []eventstore.EventType{org.AzureADIDPChangedEventType, instance.AzureADIDPChangedEventType}) +// } + +// ops := make([]func(eventstore.Event) handler.Exec, 0, 2) +// ops = append(ops, +// handler.AddUpdateStatement( +// reduceIDPChangedTemplateColumns(idpEvent.Name, idpEvent.CreationDate(), idpEvent.Sequence(), idpEvent.OptionChanges), +// []handler.Condition{ +// handler.NewCond(IDPTemplateIDCol, idpEvent.ID), +// handler.NewCond(IDPTemplateInstanceIDCol, idpEvent.Aggregate().InstanceID), +// }, +// ), +// ) +// githubCols := reduceAzureADIDPChangedColumns(idpEvent) +// if len(githubCols) > 0 { +// ops = append(ops, +// handler.AddUpdateStatement( +// githubCols, +// []handler.Condition{ +// handler.NewCond(AzureADIDCol, idpEvent.ID), +// handler.NewCond(AzureADInstanceIDCol, idpEvent.Aggregate().InstanceID), +// }, +// handler.WithTableSuffix(IDPTemplateAzureADSuffix), +// ), +// ) +// } + +// return handler.NewMultiStatement( +// &idpEvent, +// ops..., +// ), nil +// } + +// func (p *idpTemplateProjection) reduceGitHubIDPAdded(event eventstore.Event) (*handler.Statement, error) { +// var idpEvent idp.GitHubIDPAddedEvent +// var idpOwnerType domain.IdentityProviderType +// switch e := event.(type) { +// case *org.GitHubIDPAddedEvent: +// idpEvent = e.GitHubIDPAddedEvent +// idpOwnerType = domain.IdentityProviderTypeOrg +// case *instance.GitHubIDPAddedEvent: +// idpEvent = e.GitHubIDPAddedEvent +// idpOwnerType = domain.IdentityProviderTypeSystem +// default: +// return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-x9a022b", "reduce.wrong.event.type %v", []eventstore.EventType{org.GitHubIDPAddedEventType, instance.GitHubIDPAddedEventType}) +// } + +// return handler.NewMultiStatement( +// &idpEvent, +// handler.AddCreateStatement( +// []handler.Column{ +// handler.NewCol(IDPTemplateIDCol, idpEvent.ID), +// handler.NewCol(IDPTemplateCreationDateCol, idpEvent.CreationDate()), +// handler.NewCol(IDPTemplateChangeDateCol, idpEvent.CreationDate()), +// handler.NewCol(IDPTemplateSequenceCol, idpEvent.Sequence()), +// handler.NewCol(IDPTemplateResourceOwnerCol, idpEvent.Aggregate().ResourceOwner), +// handler.NewCol(IDPTemplateInstanceIDCol, idpEvent.Aggregate().InstanceID), +// handler.NewCol(IDPTemplateStateCol, domain.IDPStateActive), +// handler.NewCol(IDPTemplateNameCol, idpEvent.Name), +// handler.NewCol(IDPTemplateOwnerTypeCol, idpOwnerType), +// handler.NewCol(IDPTemplateTypeCol, domain.IDPTypeGitHub), +// handler.NewCol(IDPTemplateIsCreationAllowedCol, idpEvent.IsCreationAllowed), +// handler.NewCol(IDPTemplateIsLinkingAllowedCol, idpEvent.IsLinkingAllowed), +// handler.NewCol(IDPTemplateIsAutoCreationCol, idpEvent.IsAutoCreation), +// handler.NewCol(IDPTemplateIsAutoUpdateCol, idpEvent.IsAutoUpdate), +// handler.NewCol(IDPTemplateAutoLinkingCol, idpEvent.AutoLinkingOption), +// }, +// ), +// handler.AddCreateStatement( +// []handler.Column{ +// handler.NewCol(GitHubIDCol, idpEvent.ID), +// handler.NewCol(GitHubInstanceIDCol, idpEvent.Aggregate().InstanceID), +// handler.NewCol(GitHubClientIDCol, idpEvent.ClientID), +// handler.NewCol(GitHubClientSecretCol, idpEvent.ClientSecret), +// handler.NewCol(GitHubScopesCol, database.TextArray[string](idpEvent.Scopes)), +// }, +// handler.WithTableSuffix(IDPTemplateGitHubSuffix), +// ), +// ), nil +// } + +// func (p *idpTemplateProjection) reduceGitHubEnterpriseIDPAdded(event eventstore.Event) (*handler.Statement, error) { +// var idpEvent idp.GitHubEnterpriseIDPAddedEvent +// var idpOwnerType domain.IdentityProviderType +// switch e := event.(type) { +// case *org.GitHubEnterpriseIDPAddedEvent: +// idpEvent = e.GitHubEnterpriseIDPAddedEvent +// idpOwnerType = domain.IdentityProviderTypeOrg +// case *instance.GitHubEnterpriseIDPAddedEvent: +// idpEvent = e.GitHubEnterpriseIDPAddedEvent +// idpOwnerType = domain.IdentityProviderTypeSystem +// default: +// return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-Sf3g2a", "reduce.wrong.event.type %v", []eventstore.EventType{org.GitHubEnterpriseIDPAddedEventType, instance.GitHubEnterpriseIDPAddedEventType}) +// } + +// return handler.NewMultiStatement( +// &idpEvent, +// handler.AddCreateStatement( +// []handler.Column{ +// handler.NewCol(IDPTemplateIDCol, idpEvent.ID), +// handler.NewCol(IDPTemplateCreationDateCol, idpEvent.CreationDate()), +// handler.NewCol(IDPTemplateChangeDateCol, idpEvent.CreationDate()), +// handler.NewCol(IDPTemplateSequenceCol, idpEvent.Sequence()), +// handler.NewCol(IDPTemplateResourceOwnerCol, idpEvent.Aggregate().ResourceOwner), +// handler.NewCol(IDPTemplateInstanceIDCol, idpEvent.Aggregate().InstanceID), +// handler.NewCol(IDPTemplateStateCol, domain.IDPStateActive), +// handler.NewCol(IDPTemplateNameCol, idpEvent.Name), +// handler.NewCol(IDPTemplateOwnerTypeCol, idpOwnerType), +// handler.NewCol(IDPTemplateTypeCol, domain.IDPTypeGitHubEnterprise), +// handler.NewCol(IDPTemplateIsCreationAllowedCol, idpEvent.IsCreationAllowed), +// handler.NewCol(IDPTemplateIsLinkingAllowedCol, idpEvent.IsLinkingAllowed), +// handler.NewCol(IDPTemplateIsAutoCreationCol, idpEvent.IsAutoCreation), +// handler.NewCol(IDPTemplateIsAutoUpdateCol, idpEvent.IsAutoUpdate), +// handler.NewCol(IDPTemplateAutoLinkingCol, idpEvent.AutoLinkingOption), +// }, +// ), +// handler.AddCreateStatement( +// []handler.Column{ +// handler.NewCol(GitHubEnterpriseIDCol, idpEvent.ID), +// handler.NewCol(GitHubEnterpriseInstanceIDCol, idpEvent.Aggregate().InstanceID), +// handler.NewCol(GitHubEnterpriseClientIDCol, idpEvent.ClientID), +// handler.NewCol(GitHubEnterpriseClientSecretCol, idpEvent.ClientSecret), +// handler.NewCol(GitHubEnterpriseAuthorizationEndpointCol, idpEvent.AuthorizationEndpoint), +// handler.NewCol(GitHubEnterpriseTokenEndpointCol, idpEvent.TokenEndpoint), +// handler.NewCol(GitHubEnterpriseUserEndpointCol, idpEvent.UserEndpoint), +// handler.NewCol(GitHubEnterpriseScopesCol, database.TextArray[string](idpEvent.Scopes)), +// }, +// handler.WithTableSuffix(IDPTemplateGitHubEnterpriseSuffix), +// ), +// ), nil +// } + +// func (p *idpTemplateProjection) reduceGitHubIDPChanged(event eventstore.Event) (*handler.Statement, error) { +// var idpEvent idp.GitHubIDPChangedEvent +// switch e := event.(type) { +// case *org.GitHubIDPChangedEvent: +// idpEvent = e.GitHubIDPChangedEvent +// case *instance.GitHubIDPChangedEvent: +// idpEvent = e.GitHubIDPChangedEvent +// default: +// return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-p1582ks", "reduce.wrong.event.type %v", []eventstore.EventType{org.GitHubIDPChangedEventType, instance.GitHubIDPChangedEventType}) +// } + +// ops := make([]func(eventstore.Event) handler.Exec, 0, 2) +// ops = append(ops, +// handler.AddUpdateStatement( +// reduceIDPChangedTemplateColumns(idpEvent.Name, idpEvent.CreationDate(), idpEvent.Sequence(), idpEvent.OptionChanges), +// []handler.Condition{ +// handler.NewCond(IDPTemplateIDCol, idpEvent.ID), +// handler.NewCond(IDPTemplateInstanceIDCol, idpEvent.Aggregate().InstanceID), +// }, +// ), +// ) +// githubCols := reduceGitHubIDPChangedColumns(idpEvent) +// if len(githubCols) > 0 { +// ops = append(ops, +// handler.AddUpdateStatement( +// githubCols, +// []handler.Condition{ +// handler.NewCond(GitHubIDCol, idpEvent.ID), +// handler.NewCond(GitHubInstanceIDCol, idpEvent.Aggregate().InstanceID), +// }, +// handler.WithTableSuffix(IDPTemplateGitHubSuffix), +// ), +// ) +// } + +// return handler.NewMultiStatement( +// &idpEvent, +// ops..., +// ), nil +// } + +// func (p *idpTemplateProjection) reduceGitHubEnterpriseIDPChanged(event eventstore.Event) (*handler.Statement, error) { +// var idpEvent idp.GitHubEnterpriseIDPChangedEvent +// switch e := event.(type) { +// case *org.GitHubEnterpriseIDPChangedEvent: +// idpEvent = e.GitHubEnterpriseIDPChangedEvent +// case *instance.GitHubEnterpriseIDPChangedEvent: +// idpEvent = e.GitHubEnterpriseIDPChangedEvent +// default: +// return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-SDg3g", "reduce.wrong.event.type %v", []eventstore.EventType{org.GitHubEnterpriseIDPChangedEventType, instance.GitHubEnterpriseIDPChangedEventType}) +// } + +// ops := make([]func(eventstore.Event) handler.Exec, 0, 2) +// ops = append(ops, +// handler.AddUpdateStatement( +// reduceIDPChangedTemplateColumns(idpEvent.Name, idpEvent.CreationDate(), idpEvent.Sequence(), idpEvent.OptionChanges), +// []handler.Condition{ +// handler.NewCond(IDPTemplateIDCol, idpEvent.ID), +// handler.NewCond(IDPTemplateInstanceIDCol, idpEvent.Aggregate().InstanceID), +// }, +// ), +// ) +// githubCols := reduceGitHubEnterpriseIDPChangedColumns(idpEvent) +// if len(githubCols) > 0 { +// ops = append(ops, +// handler.AddUpdateStatement( +// githubCols, +// []handler.Condition{ +// handler.NewCond(GitHubEnterpriseIDCol, idpEvent.ID), +// handler.NewCond(GitHubEnterpriseInstanceIDCol, idpEvent.Aggregate().InstanceID), +// }, +// handler.WithTableSuffix(IDPTemplateGitHubEnterpriseSuffix), +// ), +// ) +// } + +// return handler.NewMultiStatement( +// &idpEvent, +// ops..., +// ), nil +// } + +// func (p *idpTemplateProjection) reduceGitLabIDPAdded(event eventstore.Event) (*handler.Statement, error) { +// var idpEvent idp.GitLabIDPAddedEvent +// var idpOwnerType domain.IdentityProviderType +// switch e := event.(type) { +// case *org.GitLabIDPAddedEvent: +// idpEvent = e.GitLabIDPAddedEvent +// idpOwnerType = domain.IdentityProviderTypeOrg +// case *instance.GitLabIDPAddedEvent: +// idpEvent = e.GitLabIDPAddedEvent +// idpOwnerType = domain.IdentityProviderTypeSystem +// default: +// return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-x9a022b", "reduce.wrong.event.type %v", []eventstore.EventType{org.GitLabIDPAddedEventType, instance.GitLabIDPAddedEventType}) +// } + +// return handler.NewMultiStatement( +// &idpEvent, +// handler.AddCreateStatement( +// []handler.Column{ +// handler.NewCol(IDPTemplateIDCol, idpEvent.ID), +// handler.NewCol(IDPTemplateCreationDateCol, idpEvent.CreationDate()), +// handler.NewCol(IDPTemplateChangeDateCol, idpEvent.CreationDate()), +// handler.NewCol(IDPTemplateSequenceCol, idpEvent.Sequence()), +// handler.NewCol(IDPTemplateResourceOwnerCol, idpEvent.Aggregate().ResourceOwner), +// handler.NewCol(IDPTemplateInstanceIDCol, idpEvent.Aggregate().InstanceID), +// handler.NewCol(IDPTemplateStateCol, domain.IDPStateActive), +// handler.NewCol(IDPTemplateNameCol, idpEvent.Name), +// handler.NewCol(IDPTemplateOwnerTypeCol, idpOwnerType), +// handler.NewCol(IDPTemplateTypeCol, domain.IDPTypeGitLab), +// handler.NewCol(IDPTemplateIsCreationAllowedCol, idpEvent.IsCreationAllowed), +// handler.NewCol(IDPTemplateIsLinkingAllowedCol, idpEvent.IsLinkingAllowed), +// handler.NewCol(IDPTemplateIsAutoCreationCol, idpEvent.IsAutoCreation), +// handler.NewCol(IDPTemplateIsAutoUpdateCol, idpEvent.IsAutoUpdate), +// handler.NewCol(IDPTemplateAutoLinkingCol, idpEvent.AutoLinkingOption), +// }, +// ), +// handler.AddCreateStatement( +// []handler.Column{ +// handler.NewCol(GitLabIDCol, idpEvent.ID), +// handler.NewCol(GitLabInstanceIDCol, idpEvent.Aggregate().InstanceID), +// handler.NewCol(GitLabClientIDCol, idpEvent.ClientID), +// handler.NewCol(GitLabClientSecretCol, idpEvent.ClientSecret), +// handler.NewCol(GitLabScopesCol, database.TextArray[string](idpEvent.Scopes)), +// }, +// handler.WithTableSuffix(IDPTemplateGitLabSuffix), +// ), +// ), nil +// } + +// func (p *idpTemplateProjection) reduceGitLabIDPChanged(event eventstore.Event) (*handler.Statement, error) { +// var idpEvent idp.GitLabIDPChangedEvent +// switch e := event.(type) { +// case *org.GitLabIDPChangedEvent: +// idpEvent = e.GitLabIDPChangedEvent +// case *instance.GitLabIDPChangedEvent: +// idpEvent = e.GitLabIDPChangedEvent +// default: +// return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-p1582ks", "reduce.wrong.event.type %v", []eventstore.EventType{org.GitLabIDPChangedEventType, instance.GitLabIDPChangedEventType}) +// } + +// ops := make([]func(eventstore.Event) handler.Exec, 0, 2) +// ops = append(ops, +// handler.AddUpdateStatement( +// reduceIDPChangedTemplateColumns(idpEvent.Name, idpEvent.CreationDate(), idpEvent.Sequence(), idpEvent.OptionChanges), +// []handler.Condition{ +// handler.NewCond(IDPTemplateIDCol, idpEvent.ID), +// handler.NewCond(IDPTemplateInstanceIDCol, idpEvent.Aggregate().InstanceID), +// }, +// ), +// ) +// gitlabCols := reduceGitLabIDPChangedColumns(idpEvent) +// if len(gitlabCols) > 0 { +// ops = append(ops, +// handler.AddUpdateStatement( +// gitlabCols, +// []handler.Condition{ +// handler.NewCond(GitLabIDCol, idpEvent.ID), +// handler.NewCond(GitLabInstanceIDCol, idpEvent.Aggregate().InstanceID), +// }, +// handler.WithTableSuffix(IDPTemplateGitLabSuffix), +// ), +// ) +// } + +// return handler.NewMultiStatement( +// &idpEvent, +// ops..., +// ), nil +// } + +// func (p *idpTemplateProjection) reduceGitLabSelfHostedIDPAdded(event eventstore.Event) (*handler.Statement, error) { +// var idpEvent idp.GitLabSelfHostedIDPAddedEvent +// var idpOwnerType domain.IdentityProviderType +// switch e := event.(type) { +// case *org.GitLabSelfHostedIDPAddedEvent: +// idpEvent = e.GitLabSelfHostedIDPAddedEvent +// idpOwnerType = domain.IdentityProviderTypeOrg +// case *instance.GitLabSelfHostedIDPAddedEvent: +// idpEvent = e.GitLabSelfHostedIDPAddedEvent +// idpOwnerType = domain.IdentityProviderTypeSystem +// default: +// return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-SAF3gw", "reduce.wrong.event.type %v", []eventstore.EventType{org.GitLabSelfHostedIDPAddedEventType, instance.GitLabSelfHostedIDPAddedEventType}) +// } + +// return handler.NewMultiStatement( +// &idpEvent, +// handler.AddCreateStatement( +// []handler.Column{ +// handler.NewCol(IDPTemplateIDCol, idpEvent.ID), +// handler.NewCol(IDPTemplateCreationDateCol, idpEvent.CreationDate()), +// handler.NewCol(IDPTemplateChangeDateCol, idpEvent.CreationDate()), +// handler.NewCol(IDPTemplateSequenceCol, idpEvent.Sequence()), +// handler.NewCol(IDPTemplateResourceOwnerCol, idpEvent.Aggregate().ResourceOwner), +// handler.NewCol(IDPTemplateInstanceIDCol, idpEvent.Aggregate().InstanceID), +// handler.NewCol(IDPTemplateStateCol, domain.IDPStateActive), +// handler.NewCol(IDPTemplateNameCol, idpEvent.Name), +// handler.NewCol(IDPTemplateOwnerTypeCol, idpOwnerType), +// handler.NewCol(IDPTemplateTypeCol, domain.IDPTypeGitLabSelfHosted), +// handler.NewCol(IDPTemplateIsCreationAllowedCol, idpEvent.IsCreationAllowed), +// handler.NewCol(IDPTemplateIsLinkingAllowedCol, idpEvent.IsLinkingAllowed), +// handler.NewCol(IDPTemplateIsAutoCreationCol, idpEvent.IsAutoCreation), +// handler.NewCol(IDPTemplateIsAutoUpdateCol, idpEvent.IsAutoUpdate), +// handler.NewCol(IDPTemplateAutoLinkingCol, idpEvent.AutoLinkingOption), +// }, +// ), +// handler.AddCreateStatement( +// []handler.Column{ +// handler.NewCol(GitLabSelfHostedIDCol, idpEvent.ID), +// handler.NewCol(GitLabSelfHostedInstanceIDCol, idpEvent.Aggregate().InstanceID), +// handler.NewCol(GitLabSelfHostedIssuerCol, idpEvent.Issuer), +// handler.NewCol(GitLabSelfHostedClientIDCol, idpEvent.ClientID), +// handler.NewCol(GitLabSelfHostedClientSecretCol, idpEvent.ClientSecret), +// handler.NewCol(GitLabSelfHostedScopesCol, database.TextArray[string](idpEvent.Scopes)), +// }, +// handler.WithTableSuffix(IDPTemplateGitLabSelfHostedSuffix), +// ), +// ), nil +// } + +// func (p *idpTemplateProjection) reduceGitLabSelfHostedIDPChanged(event eventstore.Event) (*handler.Statement, error) { +// var idpEvent idp.GitLabSelfHostedIDPChangedEvent +// switch e := event.(type) { +// case *org.GitLabSelfHostedIDPChangedEvent: +// idpEvent = e.GitLabSelfHostedIDPChangedEvent +// case *instance.GitLabSelfHostedIDPChangedEvent: +// idpEvent = e.GitLabSelfHostedIDPChangedEvent +// default: +// return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-SAf3g2", "reduce.wrong.event.type %v", []eventstore.EventType{org.GitLabSelfHostedIDPChangedEventType, instance.GitLabSelfHostedIDPChangedEventType}) +// } + +// ops := make([]func(eventstore.Event) handler.Exec, 0, 2) +// ops = append(ops, +// handler.AddUpdateStatement( +// reduceIDPChangedTemplateColumns(idpEvent.Name, idpEvent.CreationDate(), idpEvent.Sequence(), idpEvent.OptionChanges), +// []handler.Condition{ +// handler.NewCond(IDPTemplateIDCol, idpEvent.ID), +// handler.NewCond(IDPTemplateInstanceIDCol, idpEvent.Aggregate().InstanceID), +// }, +// ), +// ) +// gitlabCols := reduceGitLabSelfHostedIDPChangedColumns(idpEvent) +// if len(gitlabCols) > 0 { +// ops = append(ops, +// handler.AddUpdateStatement( +// gitlabCols, +// []handler.Condition{ +// handler.NewCond(GitLabSelfHostedIDCol, idpEvent.ID), +// handler.NewCond(GitLabSelfHostedInstanceIDCol, idpEvent.Aggregate().InstanceID), +// }, +// handler.WithTableSuffix(IDPTemplateGitLabSelfHostedSuffix), +// ), +// ) +// } + +// return handler.NewMultiStatement( +// &idpEvent, +// ops..., +// ), nil +// } + +// func (p *idpTemplateProjection) reduceGoogleIDPAdded(event eventstore.Event) (*handler.Statement, error) { +// var idpEvent idp.GoogleIDPAddedEvent +// var idpOwnerType domain.IdentityProviderType +// switch e := event.(type) { +// case *org.GoogleIDPAddedEvent: +// idpEvent = e.GoogleIDPAddedEvent +// idpOwnerType = domain.IdentityProviderTypeOrg +// case *instance.GoogleIDPAddedEvent: +// idpEvent = e.GoogleIDPAddedEvent +// idpOwnerType = domain.IdentityProviderTypeSystem +// default: +// return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-ap9ihb", "reduce.wrong.event.type %v", []eventstore.EventType{org.GoogleIDPAddedEventType, instance.GoogleIDPAddedEventType}) +// } + +// return handler.NewMultiStatement( +// &idpEvent, +// handler.AddCreateStatement( +// []handler.Column{ +// handler.NewCol(IDPTemplateIDCol, idpEvent.ID), +// handler.NewCol(IDPTemplateCreationDateCol, idpEvent.CreationDate()), +// handler.NewCol(IDPTemplateChangeDateCol, idpEvent.CreationDate()), +// handler.NewCol(IDPTemplateSequenceCol, idpEvent.Sequence()), +// handler.NewCol(IDPTemplateResourceOwnerCol, idpEvent.Aggregate().ResourceOwner), +// handler.NewCol(IDPTemplateInstanceIDCol, idpEvent.Aggregate().InstanceID), +// handler.NewCol(IDPTemplateStateCol, domain.IDPStateActive), +// handler.NewCol(IDPTemplateNameCol, idpEvent.Name), +// handler.NewCol(IDPTemplateOwnerTypeCol, idpOwnerType), +// handler.NewCol(IDPTemplateTypeCol, domain.IDPTypeGoogle), +// handler.NewCol(IDPTemplateIsCreationAllowedCol, idpEvent.IsCreationAllowed), +// handler.NewCol(IDPTemplateIsLinkingAllowedCol, idpEvent.IsLinkingAllowed), +// handler.NewCol(IDPTemplateIsAutoCreationCol, idpEvent.IsAutoCreation), +// handler.NewCol(IDPTemplateIsAutoUpdateCol, idpEvent.IsAutoUpdate), +// handler.NewCol(IDPTemplateAutoLinkingCol, idpEvent.AutoLinkingOption), +// }, +// ), +// handler.AddCreateStatement( +// []handler.Column{ +// handler.NewCol(GoogleIDCol, idpEvent.ID), +// handler.NewCol(GoogleInstanceIDCol, idpEvent.Aggregate().InstanceID), +// handler.NewCol(GoogleClientIDCol, idpEvent.ClientID), +// handler.NewCol(GoogleClientSecretCol, idpEvent.ClientSecret), +// handler.NewCol(GoogleScopesCol, database.TextArray[string](idpEvent.Scopes)), +// }, +// handler.WithTableSuffix(IDPTemplateGoogleSuffix), +// ), +// ), nil +// } + +// func (p *idpTemplateProjection) reduceGoogleIDPChanged(event eventstore.Event) (*handler.Statement, error) { +// var idpEvent idp.GoogleIDPChangedEvent +// switch e := event.(type) { +// case *org.GoogleIDPChangedEvent: +// idpEvent = e.GoogleIDPChangedEvent +// case *instance.GoogleIDPChangedEvent: +// idpEvent = e.GoogleIDPChangedEvent +// default: +// return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-p1582ks", "reduce.wrong.event.type %v", []eventstore.EventType{org.GoogleIDPChangedEventType, instance.GoogleIDPChangedEventType}) +// } + +// ops := make([]func(eventstore.Event) handler.Exec, 0, 2) +// ops = append(ops, +// handler.AddUpdateStatement( +// reduceIDPChangedTemplateColumns(idpEvent.Name, idpEvent.CreationDate(), idpEvent.Sequence(), idpEvent.OptionChanges), +// []handler.Condition{ +// handler.NewCond(IDPTemplateIDCol, idpEvent.ID), +// handler.NewCond(IDPTemplateInstanceIDCol, idpEvent.Aggregate().InstanceID), +// }, +// ), +// ) +// googleCols := reduceGoogleIDPChangedColumns(idpEvent) +// if len(googleCols) > 0 { +// ops = append(ops, +// handler.AddUpdateStatement( +// googleCols, +// []handler.Condition{ +// handler.NewCond(GoogleIDCol, idpEvent.ID), +// handler.NewCond(GoogleInstanceIDCol, idpEvent.Aggregate().InstanceID), +// }, +// handler.WithTableSuffix(IDPTemplateGoogleSuffix), +// ), +// ) +// } + +// return handler.NewMultiStatement( +// &idpEvent, +// ops..., +// ), nil +// } + +// func (p *idpTemplateProjection) reduceLDAPIDPAdded(event eventstore.Event) (*handler.Statement, error) { +// var idpEvent idp.LDAPIDPAddedEvent +// var idpOwnerType domain.IdentityProviderType +// switch e := event.(type) { +// case *org.LDAPIDPAddedEvent: +// idpEvent = e.LDAPIDPAddedEvent +// idpOwnerType = domain.IdentityProviderTypeOrg +// case *instance.LDAPIDPAddedEvent: +// idpEvent = e.LDAPIDPAddedEvent +// idpOwnerType = domain.IdentityProviderTypeSystem +// default: +// return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-9s02m1", "reduce.wrong.event.type %v", []eventstore.EventType{org.LDAPIDPAddedEventType, instance.LDAPIDPAddedEventType}) +// } + +// return handler.NewMultiStatement( +// &idpEvent, +// handler.AddCreateStatement( +// []handler.Column{ +// handler.NewCol(IDPTemplateIDCol, idpEvent.ID), +// handler.NewCol(IDPTemplateCreationDateCol, idpEvent.CreationDate()), +// handler.NewCol(IDPTemplateChangeDateCol, idpEvent.CreationDate()), +// handler.NewCol(IDPTemplateSequenceCol, idpEvent.Sequence()), +// handler.NewCol(IDPTemplateResourceOwnerCol, idpEvent.Aggregate().ResourceOwner), +// handler.NewCol(IDPTemplateInstanceIDCol, idpEvent.Aggregate().InstanceID), +// handler.NewCol(IDPTemplateStateCol, domain.IDPStateActive), +// handler.NewCol(IDPTemplateNameCol, idpEvent.Name), +// handler.NewCol(IDPTemplateOwnerTypeCol, idpOwnerType), +// handler.NewCol(IDPTemplateTypeCol, domain.IDPTypeLDAP), +// handler.NewCol(IDPTemplateIsCreationAllowedCol, idpEvent.IsCreationAllowed), +// handler.NewCol(IDPTemplateIsLinkingAllowedCol, idpEvent.IsLinkingAllowed), +// handler.NewCol(IDPTemplateIsAutoCreationCol, idpEvent.IsAutoCreation), +// handler.NewCol(IDPTemplateIsAutoUpdateCol, idpEvent.IsAutoUpdate), +// handler.NewCol(IDPTemplateAutoLinkingCol, idpEvent.AutoLinkingOption), +// }, +// ), +// handler.AddCreateStatement( +// []handler.Column{ +// handler.NewCol(LDAPIDCol, idpEvent.ID), +// handler.NewCol(LDAPInstanceIDCol, idpEvent.Aggregate().InstanceID), +// handler.NewCol(LDAPServersCol, database.TextArray[string](idpEvent.Servers)), +// handler.NewCol(LDAPStartTLSCol, idpEvent.StartTLS), +// handler.NewCol(LDAPBaseDNCol, idpEvent.BaseDN), +// handler.NewCol(LDAPBindDNCol, idpEvent.BindDN), +// handler.NewCol(LDAPBindPasswordCol, idpEvent.BindPassword), +// handler.NewCol(LDAPUserBaseCol, idpEvent.UserBase), +// handler.NewCol(LDAPUserObjectClassesCol, database.TextArray[string](idpEvent.UserObjectClasses)), +// handler.NewCol(LDAPUserFiltersCol, database.TextArray[string](idpEvent.UserFilters)), +// handler.NewCol(LDAPTimeoutCol, idpEvent.Timeout), +// handler.NewCol(LDAPRootCACol, idpEvent.RootCA), +// handler.NewCol(LDAPIDAttributeCol, idpEvent.IDAttribute), +// handler.NewCol(LDAPFirstNameAttributeCol, idpEvent.FirstNameAttribute), +// handler.NewCol(LDAPLastNameAttributeCol, idpEvent.LastNameAttribute), +// handler.NewCol(LDAPDisplayNameAttributeCol, idpEvent.DisplayNameAttribute), +// handler.NewCol(LDAPNickNameAttributeCol, idpEvent.NickNameAttribute), +// handler.NewCol(LDAPPreferredUsernameAttributeCol, idpEvent.PreferredUsernameAttribute), +// handler.NewCol(LDAPEmailAttributeCol, idpEvent.EmailAttribute), +// handler.NewCol(LDAPEmailVerifiedAttributeCol, idpEvent.EmailVerifiedAttribute), +// handler.NewCol(LDAPPhoneAttributeCol, idpEvent.PhoneAttribute), +// handler.NewCol(LDAPPhoneVerifiedAttributeCol, idpEvent.PhoneVerifiedAttribute), +// handler.NewCol(LDAPPreferredLanguageAttributeCol, idpEvent.PreferredLanguageAttribute), +// handler.NewCol(LDAPAvatarURLAttributeCol, idpEvent.AvatarURLAttribute), +// handler.NewCol(LDAPProfileAttributeCol, idpEvent.ProfileAttribute), +// }, +// handler.WithTableSuffix(IDPTemplateLDAPSuffix), +// ), +// ), nil +// } + +// func (p *idpTemplateProjection) reduceLDAPIDPChanged(event eventstore.Event) (*handler.Statement, error) { +// var idpEvent idp.LDAPIDPChangedEvent +// switch e := event.(type) { +// case *org.LDAPIDPChangedEvent: +// idpEvent = e.LDAPIDPChangedEvent +// case *instance.LDAPIDPChangedEvent: +// idpEvent = e.LDAPIDPChangedEvent +// default: +// return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-p1582ks", "reduce.wrong.event.type %v", []eventstore.EventType{org.LDAPIDPChangedEventType, instance.LDAPIDPChangedEventType}) +// } + +// ops := make([]func(eventstore.Event) handler.Exec, 0, 2) +// ops = append(ops, +// handler.AddUpdateStatement( +// reduceIDPChangedTemplateColumns(idpEvent.Name, idpEvent.CreationDate(), idpEvent.Sequence(), idpEvent.OptionChanges), +// []handler.Condition{ +// handler.NewCond(IDPTemplateIDCol, idpEvent.ID), +// handler.NewCond(IDPTemplateInstanceIDCol, idpEvent.Aggregate().InstanceID), +// }, +// ), +// ) + +// ldapCols := reduceLDAPIDPChangedColumns(idpEvent) +// if len(ldapCols) > 0 { +// ops = append(ops, +// handler.AddUpdateStatement( +// ldapCols, +// []handler.Condition{ +// handler.NewCond(LDAPIDCol, idpEvent.ID), +// handler.NewCond(LDAPInstanceIDCol, idpEvent.Aggregate().InstanceID), +// }, +// handler.WithTableSuffix(IDPTemplateLDAPSuffix), +// ), +// ) +// } + +// return handler.NewMultiStatement( +// &idpEvent, +// ops..., +// ), nil +// } + +// func (p *idpTemplateProjection) reduceSAMLIDPAdded(event eventstore.Event) (*handler.Statement, error) { +// var idpEvent idp.SAMLIDPAddedEvent +// var idpOwnerType domain.IdentityProviderType +// switch e := event.(type) { +// case *org.SAMLIDPAddedEvent: +// idpEvent = e.SAMLIDPAddedEvent +// idpOwnerType = domain.IdentityProviderTypeOrg +// case *instance.SAMLIDPAddedEvent: +// idpEvent = e.SAMLIDPAddedEvent +// idpOwnerType = domain.IdentityProviderTypeSystem +// default: +// return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-9s02m1", "reduce.wrong.event.type %v", []eventstore.EventType{org.SAMLIDPAddedEventType, instance.SAMLIDPAddedEventType}) +// } + +// columns := []handler.Column{ +// handler.NewCol(SAMLIDCol, idpEvent.ID), +// handler.NewCol(SAMLInstanceIDCol, idpEvent.Aggregate().InstanceID), +// handler.NewCol(SAMLMetadataCol, idpEvent.Metadata), +// handler.NewCol(SAMLKeyCol, idpEvent.Key), +// handler.NewCol(SAMLCertificateCol, idpEvent.Certificate), +// handler.NewCol(SAMLBindingCol, idpEvent.Binding), +// handler.NewCol(SAMLWithSignedRequestCol, idpEvent.WithSignedRequest), +// handler.NewCol(SAMLTransientMappingAttributeName, idpEvent.TransientMappingAttributeName), +// handler.NewCol(SAMLFederatedLogoutEnabled, idpEvent.FederatedLogoutEnabled), +// } +// if idpEvent.NameIDFormat != nil { +// columns = append(columns, handler.NewCol(SAMLNameIDFormatCol, *idpEvent.NameIDFormat)) +// } + +// return handler.NewMultiStatement( +// &idpEvent, +// handler.AddCreateStatement( +// []handler.Column{ +// handler.NewCol(IDPTemplateIDCol, idpEvent.ID), +// handler.NewCol(IDPTemplateCreationDateCol, idpEvent.CreationDate()), +// handler.NewCol(IDPTemplateChangeDateCol, idpEvent.CreationDate()), +// handler.NewCol(IDPTemplateSequenceCol, idpEvent.Sequence()), +// handler.NewCol(IDPTemplateResourceOwnerCol, idpEvent.Aggregate().ResourceOwner), +// handler.NewCol(IDPTemplateInstanceIDCol, idpEvent.Aggregate().InstanceID), +// handler.NewCol(IDPTemplateStateCol, domain.IDPStateActive), +// handler.NewCol(IDPTemplateNameCol, idpEvent.Name), +// handler.NewCol(IDPTemplateOwnerTypeCol, idpOwnerType), +// handler.NewCol(IDPTemplateTypeCol, domain.IDPTypeSAML), +// handler.NewCol(IDPTemplateIsCreationAllowedCol, idpEvent.IsCreationAllowed), +// handler.NewCol(IDPTemplateIsLinkingAllowedCol, idpEvent.IsLinkingAllowed), +// handler.NewCol(IDPTemplateIsAutoCreationCol, idpEvent.IsAutoCreation), +// handler.NewCol(IDPTemplateIsAutoUpdateCol, idpEvent.IsAutoUpdate), +// handler.NewCol(IDPTemplateAutoLinkingCol, idpEvent.AutoLinkingOption), +// }, +// ), +// handler.AddCreateStatement( +// columns, +// handler.WithTableSuffix(IDPTemplateSAMLSuffix), +// ), +// ), nil +// } + +// func (p *idpTemplateProjection) reduceSAMLIDPChanged(event eventstore.Event) (*handler.Statement, error) { +// var idpEvent idp.SAMLIDPChangedEvent +// switch e := event.(type) { +// case *org.SAMLIDPChangedEvent: +// idpEvent = e.SAMLIDPChangedEvent +// case *instance.SAMLIDPChangedEvent: +// idpEvent = e.SAMLIDPChangedEvent +// default: +// return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-o7c0fii4ad", "reduce.wrong.event.type %v", []eventstore.EventType{org.SAMLIDPChangedEventType, instance.SAMLIDPChangedEventType}) +// } + +// ops := make([]func(eventstore.Event) handler.Exec, 0, 2) +// ops = append(ops, +// handler.AddUpdateStatement( +// reduceIDPChangedTemplateColumns(idpEvent.Name, idpEvent.CreationDate(), idpEvent.Sequence(), idpEvent.OptionChanges), +// []handler.Condition{ +// handler.NewCond(IDPTemplateIDCol, idpEvent.ID), +// handler.NewCond(IDPTemplateInstanceIDCol, idpEvent.Aggregate().InstanceID), +// }, +// ), +// ) + +// SAMLCols := reduceSAMLIDPChangedColumns(idpEvent) +// if len(SAMLCols) > 0 { +// ops = append(ops, +// handler.AddUpdateStatement( +// SAMLCols, +// []handler.Condition{ +// handler.NewCond(SAMLIDCol, idpEvent.ID), +// handler.NewCond(SAMLInstanceIDCol, idpEvent.Aggregate().InstanceID), +// }, +// handler.WithTableSuffix(IDPTemplateSAMLSuffix), +// ), +// ) +// } + +// return handler.NewMultiStatement( +// &idpEvent, +// ops..., +// ), nil +// } + +// func (p *idpTemplateProjection) reduceAppleIDPAdded(event eventstore.Event) (*handler.Statement, error) { +// var idpEvent idp.AppleIDPAddedEvent +// var idpOwnerType domain.IdentityProviderType +// switch e := event.(type) { +// case *org.AppleIDPAddedEvent: +// idpEvent = e.AppleIDPAddedEvent +// idpOwnerType = domain.IdentityProviderTypeOrg +// case *instance.AppleIDPAddedEvent: +// idpEvent = e.AppleIDPAddedEvent +// idpOwnerType = domain.IdentityProviderTypeSystem +// default: +// return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-SFvg3", "reduce.wrong.event.type %v", []eventstore.EventType{org.AppleIDPAddedEventType /*, instance.AppleIDPAddedEventType*/}) +// } + +// return handler.NewMultiStatement( +// &idpEvent, +// handler.AddCreateStatement( +// []handler.Column{ +// handler.NewCol(IDPTemplateIDCol, idpEvent.ID), +// handler.NewCol(IDPTemplateCreationDateCol, idpEvent.CreationDate()), +// handler.NewCol(IDPTemplateChangeDateCol, idpEvent.CreationDate()), +// handler.NewCol(IDPTemplateSequenceCol, idpEvent.Sequence()), +// handler.NewCol(IDPTemplateResourceOwnerCol, idpEvent.Aggregate().ResourceOwner), +// handler.NewCol(IDPTemplateInstanceIDCol, idpEvent.Aggregate().InstanceID), +// handler.NewCol(IDPTemplateStateCol, domain.IDPStateActive), +// handler.NewCol(IDPTemplateNameCol, idpEvent.Name), +// handler.NewCol(IDPTemplateOwnerTypeCol, idpOwnerType), +// handler.NewCol(IDPTemplateTypeCol, domain.IDPTypeApple), +// handler.NewCol(IDPTemplateIsCreationAllowedCol, idpEvent.IsCreationAllowed), +// handler.NewCol(IDPTemplateIsLinkingAllowedCol, idpEvent.IsLinkingAllowed), +// handler.NewCol(IDPTemplateIsAutoCreationCol, idpEvent.IsAutoCreation), +// handler.NewCol(IDPTemplateIsAutoUpdateCol, idpEvent.IsAutoUpdate), +// handler.NewCol(IDPTemplateAutoLinkingCol, idpEvent.AutoLinkingOption), +// }, +// ), +// handler.AddCreateStatement( +// []handler.Column{ +// handler.NewCol(AppleIDCol, idpEvent.ID), +// handler.NewCol(AppleInstanceIDCol, idpEvent.Aggregate().InstanceID), +// handler.NewCol(AppleClientIDCol, idpEvent.ClientID), +// handler.NewCol(AppleTeamIDCol, idpEvent.TeamID), +// handler.NewCol(AppleKeyIDCol, idpEvent.KeyID), +// handler.NewCol(ApplePrivateKeyCol, idpEvent.PrivateKey), +// handler.NewCol(AppleScopesCol, database.TextArray[string](idpEvent.Scopes)), +// }, +// handler.WithTableSuffix(IDPTemplateAppleSuffix), +// ), +// ), nil +// } + +// func (p *idpTemplateProjection) reduceAppleIDPChanged(event eventstore.Event) (*handler.Statement, error) { +// var idpEvent idp.AppleIDPChangedEvent +// switch e := event.(type) { +// case *org.AppleIDPChangedEvent: +// idpEvent = e.AppleIDPChangedEvent +// case *instance.AppleIDPChangedEvent: +// idpEvent = e.AppleIDPChangedEvent +// default: +// return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-GBez3", "reduce.wrong.event.type %v", []eventstore.EventType{org.AppleIDPChangedEventType /*, instance.AppleIDPChangedEventType*/}) +// } + +// ops := make([]func(eventstore.Event) handler.Exec, 0, 2) +// ops = append(ops, +// handler.AddUpdateStatement( +// reduceIDPChangedTemplateColumns(idpEvent.Name, idpEvent.CreationDate(), idpEvent.Sequence(), idpEvent.OptionChanges), +// []handler.Condition{ +// handler.NewCond(IDPTemplateIDCol, idpEvent.ID), +// handler.NewCond(IDPTemplateInstanceIDCol, idpEvent.Aggregate().InstanceID), +// }, +// ), +// ) +// appleCols := reduceAppleIDPChangedColumns(idpEvent) +// if len(appleCols) > 0 { +// ops = append(ops, +// handler.AddUpdateStatement( +// appleCols, +// []handler.Condition{ +// handler.NewCond(AppleIDCol, idpEvent.ID), +// handler.NewCond(AppleInstanceIDCol, idpEvent.Aggregate().InstanceID), +// }, +// handler.WithTableSuffix(IDPTemplateAppleSuffix), +// ), +// ) +// } + +// return handler.NewMultiStatement( +// &idpEvent, +// ops..., +// ), nil +// } + +// func (p *idpTemplateProjection) reduceIDPConfigRemoved(event eventstore.Event) (*handler.Statement, error) { +// var idpEvent idpconfig.IDPConfigRemovedEvent +// switch e := event.(type) { +// case *org.IDPConfigRemovedEvent: +// idpEvent = e.IDPConfigRemovedEvent +// case *instance.IDPConfigRemovedEvent: +// idpEvent = e.IDPConfigRemovedEvent +// default: +// return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-SAFet", "reduce.wrong.event.type %v", []eventstore.EventType{org.IDPConfigRemovedEventType, instance.IDPConfigRemovedEventType}) +// } + +// return handler.NewDeleteStatement( +// &idpEvent, +// []handler.Condition{ +// handler.NewCond(IDPTemplateIDCol, idpEvent.ConfigID), +// handler.NewCond(IDPTemplateInstanceIDCol, idpEvent.Aggregate().InstanceID), +// }, +// ), nil +// } + +// func (p *idpTemplateProjection) reduceIDPRemoved(event eventstore.Event) (*handler.Statement, error) { +// var idpEvent idp.RemovedEvent +// switch e := event.(type) { +// case *org.IDPRemovedEvent: +// idpEvent = e.RemovedEvent +// case *instance.IDPRemovedEvent: +// idpEvent = e.RemovedEvent +// default: +// return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-xbcvwin2", "reduce.wrong.event.type %v", []eventstore.EventType{org.IDPRemovedEventType, instance.IDPRemovedEventType}) +// } + +// return handler.NewDeleteStatement( +// &idpEvent, +// []handler.Condition{ +// handler.NewCond(IDPTemplateIDCol, idpEvent.ID), +// handler.NewCond(IDPTemplateInstanceIDCol, idpEvent.Aggregate().InstanceID), +// }, +// ), nil +// } + +// func (p *idpTemplateProjection) reduceOwnerRemoved(event eventstore.Event) (*handler.Statement, error) { +// e, ok := event.(*org.OrgRemovedEvent) +// if !ok { +// return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-Jp0D2K", "reduce.wrong.event.type %s", org.OrgRemovedEventType) +// } + +// return handler.NewDeleteStatement( +// e, +// []handler.Condition{ +// handler.NewCond(IDPTemplateInstanceIDCol, e.Aggregate().InstanceID), +// handler.NewCond(IDPTemplateResourceOwnerCol, e.Aggregate().ID), +// }, +// ), nil +// } + +// func reduceIDPChangedTemplateColumns(name *string, creationDate time.Time, sequence uint64, optionChanges idp.OptionChanges) []handler.Column { +// cols := make([]handler.Column, 0, 7) +// if name != nil { +// cols = append(cols, handler.NewCol(IDPTemplateNameCol, *name)) +// } +// if optionChanges.IsCreationAllowed != nil { +// cols = append(cols, handler.NewCol(IDPTemplateIsCreationAllowedCol, *optionChanges.IsCreationAllowed)) +// } +// if optionChanges.IsLinkingAllowed != nil { +// cols = append(cols, handler.NewCol(IDPTemplateIsLinkingAllowedCol, *optionChanges.IsLinkingAllowed)) +// } +// if optionChanges.IsAutoCreation != nil { +// cols = append(cols, handler.NewCol(IDPTemplateIsAutoCreationCol, *optionChanges.IsAutoCreation)) +// } +// if optionChanges.IsAutoUpdate != nil { +// cols = append(cols, handler.NewCol(IDPTemplateIsAutoUpdateCol, *optionChanges.IsAutoUpdate)) +// } +// if optionChanges.AutoLinkingOption != nil { +// cols = append(cols, handler.NewCol(IDPTemplateAutoLinkingCol, *optionChanges.AutoLinkingOption)) +// } +// return append(cols, +// handler.NewCol(IDPTemplateChangeDateCol, creationDate), +// handler.NewCol(IDPTemplateSequenceCol, sequence), +// ) +// } + +// func reduceOAuthIDPChangedColumns(idpEvent idp.OAuthIDPChangedEvent) []handler.Column { +// oauthCols := make([]handler.Column, 0, 7) +// if idpEvent.ClientID != nil { +// oauthCols = append(oauthCols, handler.NewCol(OAuthClientIDCol, *idpEvent.ClientID)) +// } +// if idpEvent.ClientSecret != nil { +// oauthCols = append(oauthCols, handler.NewCol(OAuthClientSecretCol, *idpEvent.ClientSecret)) +// } +// if idpEvent.AuthorizationEndpoint != nil { +// oauthCols = append(oauthCols, handler.NewCol(OAuthAuthorizationEndpointCol, *idpEvent.AuthorizationEndpoint)) +// } +// if idpEvent.TokenEndpoint != nil { +// oauthCols = append(oauthCols, handler.NewCol(OAuthTokenEndpointCol, *idpEvent.TokenEndpoint)) +// } +// if idpEvent.UserEndpoint != nil { +// oauthCols = append(oauthCols, handler.NewCol(OAuthUserEndpointCol, *idpEvent.UserEndpoint)) +// } +// if idpEvent.Scopes != nil { +// oauthCols = append(oauthCols, handler.NewCol(OAuthScopesCol, database.TextArray[string](idpEvent.Scopes))) +// } +// if idpEvent.IDAttribute != nil { +// oauthCols = append(oauthCols, handler.NewCol(OAuthIDAttributeCol, *idpEvent.IDAttribute)) +// } +// if idpEvent.UsePKCE != nil { +// oauthCols = append(oauthCols, handler.NewCol(OAuthUsePKCECol, *idpEvent.UsePKCE)) +// } +// return oauthCols +// } + +// func reduceOIDCIDPChangedColumns(idpEvent idp.OIDCIDPChangedEvent) []handler.Column { +// oidcCols := make([]handler.Column, 0, 5) +// if idpEvent.ClientID != nil { +// oidcCols = append(oidcCols, handler.NewCol(OIDCClientIDCol, *idpEvent.ClientID)) +// } +// if idpEvent.ClientSecret != nil { +// oidcCols = append(oidcCols, handler.NewCol(OIDCClientSecretCol, *idpEvent.ClientSecret)) +// } +// if idpEvent.Issuer != nil { +// oidcCols = append(oidcCols, handler.NewCol(OIDCIssuerCol, *idpEvent.Issuer)) +// } +// if idpEvent.Scopes != nil { +// oidcCols = append(oidcCols, handler.NewCol(OIDCScopesCol, database.TextArray[string](idpEvent.Scopes))) +// } +// if idpEvent.IsIDTokenMapping != nil { +// oidcCols = append(oidcCols, handler.NewCol(OIDCIDTokenMappingCol, *idpEvent.IsIDTokenMapping)) +// } +// if idpEvent.UsePKCE != nil { +// oidcCols = append(oidcCols, handler.NewCol(OIDCUsePKCECol, *idpEvent.UsePKCE)) +// } +// return oidcCols +// } + +// func reduceJWTIDPChangedColumns(idpEvent idp.JWTIDPChangedEvent) []handler.Column { +// jwtCols := make([]handler.Column, 0, 4) +// if idpEvent.JWTEndpoint != nil { +// jwtCols = append(jwtCols, handler.NewCol(JWTEndpointCol, *idpEvent.JWTEndpoint)) +// } +// if idpEvent.KeysEndpoint != nil { +// jwtCols = append(jwtCols, handler.NewCol(JWTKeysEndpointCol, *idpEvent.KeysEndpoint)) +// } +// if idpEvent.HeaderName != nil { +// jwtCols = append(jwtCols, handler.NewCol(JWTHeaderNameCol, *idpEvent.HeaderName)) +// } +// if idpEvent.Issuer != nil { +// jwtCols = append(jwtCols, handler.NewCol(JWTIssuerCol, *idpEvent.Issuer)) +// } +// return jwtCols +// } + +// func reduceAzureADIDPChangedColumns(idpEvent idp.AzureADIDPChangedEvent) []handler.Column { +// azureADCols := make([]handler.Column, 0, 5) +// if idpEvent.ClientID != nil { +// azureADCols = append(azureADCols, handler.NewCol(AzureADClientIDCol, *idpEvent.ClientID)) +// } +// if idpEvent.ClientSecret != nil { +// azureADCols = append(azureADCols, handler.NewCol(AzureADClientSecretCol, *idpEvent.ClientSecret)) +// } +// if idpEvent.Scopes != nil { +// azureADCols = append(azureADCols, handler.NewCol(AzureADScopesCol, database.TextArray[string](idpEvent.Scopes))) +// } +// if idpEvent.Tenant != nil { +// azureADCols = append(azureADCols, handler.NewCol(AzureADTenantCol, *idpEvent.Tenant)) +// } +// if idpEvent.IsEmailVerified != nil { +// azureADCols = append(azureADCols, handler.NewCol(AzureADIsEmailVerified, *idpEvent.IsEmailVerified)) +// } +// return azureADCols +// } + +// func reduceGitHubIDPChangedColumns(idpEvent idp.GitHubIDPChangedEvent) []handler.Column { +// oauthCols := make([]handler.Column, 0, 3) +// if idpEvent.ClientID != nil { +// oauthCols = append(oauthCols, handler.NewCol(GitHubClientIDCol, *idpEvent.ClientID)) +// } +// if idpEvent.ClientSecret != nil { +// oauthCols = append(oauthCols, handler.NewCol(GitHubClientSecretCol, *idpEvent.ClientSecret)) +// } +// if idpEvent.Scopes != nil { +// oauthCols = append(oauthCols, handler.NewCol(GitHubScopesCol, database.TextArray[string](idpEvent.Scopes))) +// } +// return oauthCols +// } + +// func reduceGitHubEnterpriseIDPChangedColumns(idpEvent idp.GitHubEnterpriseIDPChangedEvent) []handler.Column { +// oauthCols := make([]handler.Column, 0, 6) +// if idpEvent.ClientID != nil { +// oauthCols = append(oauthCols, handler.NewCol(GitHubEnterpriseClientIDCol, *idpEvent.ClientID)) +// } +// if idpEvent.ClientSecret != nil { +// oauthCols = append(oauthCols, handler.NewCol(GitHubEnterpriseClientSecretCol, *idpEvent.ClientSecret)) +// } +// if idpEvent.AuthorizationEndpoint != nil { +// oauthCols = append(oauthCols, handler.NewCol(GitHubEnterpriseAuthorizationEndpointCol, *idpEvent.AuthorizationEndpoint)) +// } +// if idpEvent.TokenEndpoint != nil { +// oauthCols = append(oauthCols, handler.NewCol(GitHubEnterpriseTokenEndpointCol, *idpEvent.TokenEndpoint)) +// } +// if idpEvent.UserEndpoint != nil { +// oauthCols = append(oauthCols, handler.NewCol(GitHubEnterpriseUserEndpointCol, *idpEvent.UserEndpoint)) +// } +// if idpEvent.Scopes != nil { +// oauthCols = append(oauthCols, handler.NewCol(GitHubEnterpriseScopesCol, database.TextArray[string](idpEvent.Scopes))) +// } +// return oauthCols +// } + +// func reduceGitLabIDPChangedColumns(idpEvent idp.GitLabIDPChangedEvent) []handler.Column { +// gitlabCols := make([]handler.Column, 0, 3) +// if idpEvent.ClientID != nil { +// gitlabCols = append(gitlabCols, handler.NewCol(GitLabClientIDCol, *idpEvent.ClientID)) +// } +// if idpEvent.ClientSecret != nil { +// gitlabCols = append(gitlabCols, handler.NewCol(GitLabClientSecretCol, *idpEvent.ClientSecret)) +// } +// if idpEvent.Scopes != nil { +// gitlabCols = append(gitlabCols, handler.NewCol(GitLabScopesCol, database.TextArray[string](idpEvent.Scopes))) +// } +// return gitlabCols +// } + +// func reduceGitLabSelfHostedIDPChangedColumns(idpEvent idp.GitLabSelfHostedIDPChangedEvent) []handler.Column { +// gitlabCols := make([]handler.Column, 0, 4) +// if idpEvent.Issuer != nil { +// gitlabCols = append(gitlabCols, handler.NewCol(GitLabSelfHostedIssuerCol, *idpEvent.Issuer)) +// } +// if idpEvent.ClientID != nil { +// gitlabCols = append(gitlabCols, handler.NewCol(GitLabSelfHostedClientIDCol, *idpEvent.ClientID)) +// } +// if idpEvent.ClientSecret != nil { +// gitlabCols = append(gitlabCols, handler.NewCol(GitLabSelfHostedClientSecretCol, *idpEvent.ClientSecret)) +// } +// if idpEvent.Scopes != nil { +// gitlabCols = append(gitlabCols, handler.NewCol(GitLabSelfHostedScopesCol, database.TextArray[string](idpEvent.Scopes))) +// } +// return gitlabCols +// } + +// func reduceGoogleIDPChangedColumns(idpEvent idp.GoogleIDPChangedEvent) []handler.Column { +// googleCols := make([]handler.Column, 0, 3) +// if idpEvent.ClientID != nil { +// googleCols = append(googleCols, handler.NewCol(GoogleClientIDCol, *idpEvent.ClientID)) +// } +// if idpEvent.ClientSecret != nil { +// googleCols = append(googleCols, handler.NewCol(GoogleClientSecretCol, *idpEvent.ClientSecret)) +// } +// if idpEvent.Scopes != nil { +// googleCols = append(googleCols, handler.NewCol(GoogleScopesCol, database.TextArray[string](idpEvent.Scopes))) +// } +// return googleCols +// } + +// func reduceLDAPIDPChangedColumns(idpEvent idp.LDAPIDPChangedEvent) []handler.Column { +// ldapCols := make([]handler.Column, 0, 22) +// if idpEvent.Servers != nil { +// ldapCols = append(ldapCols, handler.NewCol(LDAPServersCol, database.TextArray[string](idpEvent.Servers))) +// } +// if idpEvent.StartTLS != nil { +// ldapCols = append(ldapCols, handler.NewCol(LDAPStartTLSCol, *idpEvent.StartTLS)) +// } +// if idpEvent.BaseDN != nil { +// ldapCols = append(ldapCols, handler.NewCol(LDAPBaseDNCol, *idpEvent.BaseDN)) +// } +// if idpEvent.BindDN != nil { +// ldapCols = append(ldapCols, handler.NewCol(LDAPBindDNCol, *idpEvent.BindDN)) +// } +// if idpEvent.BindPassword != nil { +// ldapCols = append(ldapCols, handler.NewCol(LDAPBindPasswordCol, idpEvent.BindPassword)) +// } +// if idpEvent.UserBase != nil { +// ldapCols = append(ldapCols, handler.NewCol(LDAPUserBaseCol, *idpEvent.UserBase)) +// } +// if idpEvent.UserObjectClasses != nil { +// ldapCols = append(ldapCols, handler.NewCol(LDAPUserObjectClassesCol, database.TextArray[string](idpEvent.UserObjectClasses))) +// } +// if idpEvent.UserFilters != nil { +// ldapCols = append(ldapCols, handler.NewCol(LDAPUserFiltersCol, database.TextArray[string](idpEvent.UserFilters))) +// } +// if idpEvent.Timeout != nil { +// ldapCols = append(ldapCols, handler.NewCol(LDAPTimeoutCol, *idpEvent.Timeout)) +// } +// if idpEvent.RootCA != nil { +// ldapCols = append(ldapCols, handler.NewCol(LDAPRootCACol, idpEvent.RootCA)) +// } +// if idpEvent.IDAttribute != nil { +// ldapCols = append(ldapCols, handler.NewCol(LDAPIDAttributeCol, *idpEvent.IDAttribute)) +// } +// if idpEvent.FirstNameAttribute != nil { +// ldapCols = append(ldapCols, handler.NewCol(LDAPFirstNameAttributeCol, *idpEvent.FirstNameAttribute)) +// } +// if idpEvent.LastNameAttribute != nil { +// ldapCols = append(ldapCols, handler.NewCol(LDAPLastNameAttributeCol, *idpEvent.LastNameAttribute)) +// } +// if idpEvent.DisplayNameAttribute != nil { +// ldapCols = append(ldapCols, handler.NewCol(LDAPDisplayNameAttributeCol, *idpEvent.DisplayNameAttribute)) +// } +// if idpEvent.NickNameAttribute != nil { +// ldapCols = append(ldapCols, handler.NewCol(LDAPNickNameAttributeCol, *idpEvent.NickNameAttribute)) +// } +// if idpEvent.PreferredUsernameAttribute != nil { +// ldapCols = append(ldapCols, handler.NewCol(LDAPPreferredUsernameAttributeCol, *idpEvent.PreferredUsernameAttribute)) +// } +// if idpEvent.EmailAttribute != nil { +// ldapCols = append(ldapCols, handler.NewCol(LDAPEmailAttributeCol, *idpEvent.EmailAttribute)) +// } +// if idpEvent.EmailVerifiedAttribute != nil { +// ldapCols = append(ldapCols, handler.NewCol(LDAPEmailVerifiedAttributeCol, *idpEvent.EmailVerifiedAttribute)) +// } +// if idpEvent.PhoneAttribute != nil { +// ldapCols = append(ldapCols, handler.NewCol(LDAPPhoneAttributeCol, *idpEvent.PhoneAttribute)) +// } +// if idpEvent.PhoneVerifiedAttribute != nil { +// ldapCols = append(ldapCols, handler.NewCol(LDAPPhoneVerifiedAttributeCol, *idpEvent.PhoneVerifiedAttribute)) +// } +// if idpEvent.PreferredLanguageAttribute != nil { +// ldapCols = append(ldapCols, handler.NewCol(LDAPPreferredLanguageAttributeCol, *idpEvent.PreferredLanguageAttribute)) +// } +// if idpEvent.AvatarURLAttribute != nil { +// ldapCols = append(ldapCols, handler.NewCol(LDAPAvatarURLAttributeCol, *idpEvent.AvatarURLAttribute)) +// } +// if idpEvent.ProfileAttribute != nil { +// ldapCols = append(ldapCols, handler.NewCol(LDAPProfileAttributeCol, *idpEvent.ProfileAttribute)) +// } +// return ldapCols +// } + +// func reduceAppleIDPChangedColumns(idpEvent idp.AppleIDPChangedEvent) []handler.Column { +// appleCols := make([]handler.Column, 0, 5) +// if idpEvent.ClientID != nil { +// appleCols = append(appleCols, handler.NewCol(AppleClientIDCol, *idpEvent.ClientID)) +// } +// if idpEvent.TeamID != nil { +// appleCols = append(appleCols, handler.NewCol(AppleTeamIDCol, *idpEvent.TeamID)) +// } +// if idpEvent.KeyID != nil { +// appleCols = append(appleCols, handler.NewCol(AppleKeyIDCol, *idpEvent.KeyID)) +// } +// if idpEvent.PrivateKey != nil { +// appleCols = append(appleCols, handler.NewCol(ApplePrivateKeyCol, *idpEvent.PrivateKey)) +// } +// if idpEvent.Scopes != nil { +// appleCols = append(appleCols, handler.NewCol(AppleScopesCol, database.TextArray[string](idpEvent.Scopes))) +// } +// return appleCols +// } + +// func reduceSAMLIDPChangedColumns(idpEvent idp.SAMLIDPChangedEvent) []handler.Column { +// SAMLCols := make([]handler.Column, 0, 5) +// if idpEvent.Metadata != nil { +// SAMLCols = append(SAMLCols, handler.NewCol(SAMLMetadataCol, idpEvent.Metadata)) +// } +// if idpEvent.Key != nil { +// SAMLCols = append(SAMLCols, handler.NewCol(SAMLKeyCol, idpEvent.Key)) +// } +// if idpEvent.Certificate != nil { +// SAMLCols = append(SAMLCols, handler.NewCol(SAMLCertificateCol, idpEvent.Certificate)) +// } +// if idpEvent.Binding != nil { +// SAMLCols = append(SAMLCols, handler.NewCol(SAMLBindingCol, *idpEvent.Binding)) +// } +// if idpEvent.WithSignedRequest != nil { +// SAMLCols = append(SAMLCols, handler.NewCol(SAMLWithSignedRequestCol, *idpEvent.WithSignedRequest)) +// } +// if idpEvent.NameIDFormat != nil { +// SAMLCols = append(SAMLCols, handler.NewCol(SAMLNameIDFormatCol, *idpEvent.NameIDFormat)) +// } +// if idpEvent.TransientMappingAttributeName != nil { +// SAMLCols = append(SAMLCols, handler.NewCol(SAMLTransientMappingAttributeName, *idpEvent.TransientMappingAttributeName)) +// } +// if idpEvent.FederatedLogoutEnabled != nil { +// SAMLCols = append(SAMLCols, handler.NewCol(SAMLFederatedLogoutEnabled, *idpEvent.FederatedLogoutEnabled)) +// } +// return SAMLCols +// }