diff --git a/internal/query/projection/iam_member_test.go b/internal/query/projection/iam_member_test.go index 0413941620..0fc0a571ff 100644 --- a/internal/query/projection/iam_member_test.go +++ b/internal/query/projection/iam_member_test.go @@ -8,6 +8,7 @@ import ( "github.com/caos/zitadel/internal/eventstore/handler" "github.com/caos/zitadel/internal/eventstore/repository" "github.com/caos/zitadel/internal/repository/iam" + "github.com/lib/pq" ) func TestIAMMemberProjection_reduces(t *testing.T) { @@ -44,7 +45,7 @@ func TestIAMMemberProjection_reduces(t *testing.T) { expectedStmt: "INSERT INTO zitadel.projections.iam_members (user_id, roles, creation_date, change_date, sequence, resource_owner, iam_id) VALUES ($1, $2, $3, $4, $5, $6, $7)", expectedArgs: []interface{}{ "user-id", - []string{"role"}, + pq.StringArray{"role"}, anyArg{}, anyArg{}, uint64(15), @@ -79,7 +80,7 @@ func TestIAMMemberProjection_reduces(t *testing.T) { { expectedStmt: "UPDATE zitadel.projections.iam_members SET (roles, change_date, sequence) = ($1, $2, $3) WHERE (user_id = $4) AND (iam_id = $5)", expectedArgs: []interface{}{ - []string{"role", "changed"}, + pq.StringArray{"role", "changed"}, anyArg{}, uint64(15), "user-id", diff --git a/internal/query/projection/member.go b/internal/query/projection/member.go index 232282c578..cf6e1fabe5 100644 --- a/internal/query/projection/member.go +++ b/internal/query/projection/member.go @@ -4,6 +4,7 @@ import ( "github.com/caos/zitadel/internal/eventstore/handler" "github.com/caos/zitadel/internal/eventstore/handler/crdb" "github.com/caos/zitadel/internal/repository/member" + "github.com/lib/pq" ) const ( @@ -41,7 +42,7 @@ func reduceMemberAdded(e member.MemberAddedEvent, opts ...reduceMemberOpt) (*han config := reduceMemberConfig{ cols: []handler.Column{ handler.NewCol(MemberUserIDCol, e.UserID), - handler.NewCol(MemberRolesCol, e.Roles), + handler.NewCol(MemberRolesCol, pq.StringArray(e.Roles)), handler.NewCol(MemberCreationDate, e.CreationDate()), handler.NewCol(MemberChangeDate, e.CreationDate()), handler.NewCol(MemberSequence, e.Sequence()), @@ -58,7 +59,7 @@ func reduceMemberAdded(e member.MemberAddedEvent, opts ...reduceMemberOpt) (*han func reduceMemberChanged(e member.MemberChangedEvent, opts ...reduceMemberOpt) (*handler.Statement, error) { config := reduceMemberConfig{ cols: []handler.Column{ - handler.NewCol(MemberRolesCol, e.Roles), + handler.NewCol(MemberRolesCol, pq.StringArray(e.Roles)), handler.NewCol(MemberChangeDate, e.CreationDate()), handler.NewCol(MemberSequence, e.Sequence()), }, diff --git a/internal/query/projection/org_member_test.go b/internal/query/projection/org_member_test.go index 65adfa6a9e..20975393bb 100644 --- a/internal/query/projection/org_member_test.go +++ b/internal/query/projection/org_member_test.go @@ -8,6 +8,7 @@ import ( "github.com/caos/zitadel/internal/eventstore/handler" "github.com/caos/zitadel/internal/eventstore/repository" "github.com/caos/zitadel/internal/repository/org" + "github.com/lib/pq" ) func TestOrgMemberProjection_reduces(t *testing.T) { @@ -44,7 +45,7 @@ func TestOrgMemberProjection_reduces(t *testing.T) { expectedStmt: "INSERT INTO zitadel.projections.org_members (user_id, roles, creation_date, change_date, sequence, resource_owner, org_id) VALUES ($1, $2, $3, $4, $5, $6, $7)", expectedArgs: []interface{}{ "user-id", - []string{"role"}, + pq.StringArray{"role"}, anyArg{}, anyArg{}, uint64(15), @@ -79,7 +80,7 @@ func TestOrgMemberProjection_reduces(t *testing.T) { { expectedStmt: "UPDATE zitadel.projections.org_members SET (roles, change_date, sequence) = ($1, $2, $3) WHERE (user_id = $4) AND (org_id = $5)", expectedArgs: []interface{}{ - []string{"role", "changed"}, + pq.StringArray{"role", "changed"}, anyArg{}, uint64(15), "user-id", diff --git a/internal/query/projection/project_grant_member_test.go b/internal/query/projection/project_grant_member_test.go index 73681d02a9..46fc520392 100644 --- a/internal/query/projection/project_grant_member_test.go +++ b/internal/query/projection/project_grant_member_test.go @@ -8,6 +8,7 @@ import ( "github.com/caos/zitadel/internal/eventstore/handler" "github.com/caos/zitadel/internal/eventstore/repository" "github.com/caos/zitadel/internal/repository/project" + "github.com/lib/pq" ) func TestProjectGrantMemberProjection_reduces(t *testing.T) { @@ -45,7 +46,7 @@ func TestProjectGrantMemberProjection_reduces(t *testing.T) { expectedStmt: "INSERT INTO zitadel.projections.project_grant_members (user_id, roles, creation_date, change_date, sequence, resource_owner, project_id, grant_id) VALUES ($1, $2, $3, $4, $5, $6, $7, $8)", expectedArgs: []interface{}{ "user-id", - []string{"role"}, + pq.StringArray{"role"}, anyArg{}, anyArg{}, uint64(15), @@ -82,7 +83,7 @@ func TestProjectGrantMemberProjection_reduces(t *testing.T) { { expectedStmt: "UPDATE zitadel.projections.project_grant_members SET (roles, change_date, sequence) = ($1, $2, $3) WHERE (user_id = $4) AND (project_id = $5) AND (grant_id = $6)", expectedArgs: []interface{}{ - []string{"role", "changed"}, + pq.StringArray{"role", "changed"}, anyArg{}, uint64(15), "user-id", diff --git a/internal/query/projection/project_member_test.go b/internal/query/projection/project_member_test.go index 5c64b2f70e..89c87d670a 100644 --- a/internal/query/projection/project_member_test.go +++ b/internal/query/projection/project_member_test.go @@ -8,6 +8,7 @@ import ( "github.com/caos/zitadel/internal/eventstore/handler" "github.com/caos/zitadel/internal/eventstore/repository" "github.com/caos/zitadel/internal/repository/project" + "github.com/lib/pq" ) func TestProjectMemberProjection_reduces(t *testing.T) { @@ -44,7 +45,7 @@ func TestProjectMemberProjection_reduces(t *testing.T) { expectedStmt: "INSERT INTO zitadel.projections.project_members (user_id, roles, creation_date, change_date, sequence, resource_owner, project_id) VALUES ($1, $2, $3, $4, $5, $6, $7)", expectedArgs: []interface{}{ "user-id", - []string{"role"}, + pq.StringArray{"role"}, anyArg{}, anyArg{}, uint64(15), @@ -79,7 +80,7 @@ func TestProjectMemberProjection_reduces(t *testing.T) { { expectedStmt: "UPDATE zitadel.projections.project_members SET (roles, change_date, sequence) = ($1, $2, $3) WHERE (user_id = $4) AND (project_id = $5)", expectedArgs: []interface{}{ - []string{"role", "changed"}, + pq.StringArray{"role", "changed"}, anyArg{}, uint64(15), "user-id", diff --git a/internal/query/projection/projection.go b/internal/query/projection/projection.go index 23df19c598..db38087907 100644 --- a/internal/query/projection/projection.go +++ b/internal/query/projection/projection.go @@ -58,6 +58,10 @@ func Start(ctx context.Context, sqlClient *sql.DB, es *eventstore.Eventstore, co NewFeatureProjection(ctx, applyCustomConfig(projectionConfig, config.Customizations["features"])) NewUserProjection(ctx, applyCustomConfig(projectionConfig, config.Customizations["users"])) NewLoginNameProjection(ctx, applyCustomConfig(projectionConfig, config.Customizations["login_names"])) + NewOrgMemberProjection(ctx, applyCustomConfig(projectionConfig, config.Customizations["org_members"])) + NewIAMMemberProjection(ctx, applyCustomConfig(projectionConfig, config.Customizations["iam_members"])) + NewProjectMemberProjection(ctx, applyCustomConfig(projectionConfig, config.Customizations["project_members"])) + NewProjectGrantMemberProjection(ctx, applyCustomConfig(projectionConfig, config.Customizations["project_grant_members"])) return nil }