From 0ec7a74877dc3948da98a97be79d4630a95a3d51 Mon Sep 17 00:00:00 2001 From: Stefan Benz <46600784+stebenz@users.noreply.github.com> Date: Mon, 20 Nov 2023 16:21:08 +0100 Subject: [PATCH] perf: remove owner removed columns from projections for oidc (#6925) * fix: remove owner removed columns from login names projection * fix: remove owner removed columns from flow projection * fix: remove owner removed columns from project, projectgrant and member projections * fix: correct unit tests for session projection * fix: correct unit tests for session projection --- .../loadbalancing-example.mdx | 2 +- internal/api/grpc/admin/export.go | 14 ++-- internal/api/grpc/admin/iam_member.go | 2 +- internal/api/grpc/auth/permission.go | 2 +- internal/api/grpc/auth/user.go | 4 +- internal/api/grpc/management/actions.go | 2 +- internal/api/grpc/management/flow.go | 2 +- internal/api/grpc/management/org.go | 2 +- internal/api/grpc/management/project.go | 16 ++--- internal/api/grpc/management/project_grant.go | 8 +-- internal/api/grpc/management/user.go | 4 +- internal/api/grpc/system/instance.go | 2 +- internal/api/oidc/auth_request.go | 10 +-- internal/api/oidc/client.go | 6 +- internal/api/saml/storage.go | 2 +- internal/api/ui/login/custom_action.go | 8 +-- .../eventsourcing/eventstore/auth_request.go | 14 ++-- .../eventstore/auth_request_test.go | 6 +- .../eventstore/user_membership.go | 2 +- internal/query/action_flow.go | 19 +----- internal/query/action_flow_test.go | 30 ++++----- internal/query/app.go | 5 +- internal/query/app_test.go | 26 +++---- internal/query/iam_member.go | 19 +----- internal/query/iam_member_test.go | 10 +-- internal/query/login_name.go | 18 ----- internal/query/org_member.go | 19 +----- internal/query/org_member_test.go | 12 ++-- internal/query/project.go | 14 +--- internal/query/project_grant.go | 30 ++------- internal/query/project_grant_member.go | 24 +------ internal/query/project_grant_member_test.go | 18 ++--- internal/query/project_grant_test.go | 56 ++++++++-------- internal/query/project_member.go | 19 +----- internal/query/project_member_test.go | 12 ++-- internal/query/project_role.go | 16 +---- internal/query/project_role_test.go | 18 ++--- internal/query/project_test.go | 48 ++++++------- internal/query/projection/flow.go | 5 +- internal/query/projection/flow_test.go | 12 ++-- internal/query/projection/instance_member.go | 5 +- .../query/projection/instance_member_test.go | 16 ++--- internal/query/projection/login_name.go | 34 ++-------- internal/query/projection/login_name_test.go | 42 ++++++------ internal/query/projection/member.go | 14 ---- internal/query/projection/org_member.go | 6 +- internal/query/projection/org_member_test.go | 18 +++-- internal/query/projection/project.go | 5 +- internal/query/projection/project_grant.go | 28 +++----- .../query/projection/project_grant_member.go | 17 ++--- .../projection/project_grant_member_test.go | 25 +++---- .../query/projection/project_grant_test.go | 20 +++--- internal/query/projection/project_member.go | 6 +- .../query/projection/project_member_test.go | 20 +++--- internal/query/projection/project_role.go | 5 +- .../query/projection/project_role_test.go | 12 ++-- internal/query/projection/project_test.go | 14 ++-- internal/query/sessions_test.go | 8 +-- internal/query/user.go | 41 +++--------- internal/query/user_grant.go | 1 - internal/query/user_grant_test.go | 20 +++--- internal/query/user_membership.go | 67 ++++--------------- internal/query/user_membership_test.go | 38 +++++------ internal/query/user_test.go | 10 +-- internal/query/zitadel_permission.go | 2 +- 65 files changed, 358 insertions(+), 654 deletions(-) diff --git a/docs/docs/self-hosting/deploy/loadbalancing-example/loadbalancing-example.mdx b/docs/docs/self-hosting/deploy/loadbalancing-example/loadbalancing-example.mdx index 803122751b..37fa10ac16 100644 --- a/docs/docs/self-hosting/deploy/loadbalancing-example/loadbalancing-example.mdx +++ b/docs/docs/self-hosting/deploy/loadbalancing-example/loadbalancing-example.mdx @@ -77,4 +77,4 @@ Read more about [the login process](/guides/integrate/login-users). ## Troubleshooting You can connect to cockroach like this: `docker exec -it loadbalancing-example-my-cockroach-db-1 cockroach sql --host my-cockroach-db --certs-dir /cockroach/certs/` -For example, to show all login names: `docker exec -it loadbalancing-example-my-cockroach-db-1 cockroach sql --database zitadel --host my-cockroach-db --certs-dir /cockroach/certs/ --execute "select * from projections.login_names2"` +For example, to show all login names: `docker exec -it loadbalancing-example-my-cockroach-db-1 cockroach sql --database zitadel --host my-cockroach-db --certs-dir /cockroach/certs/ --execute "select * from projections.login_names3"` diff --git a/internal/api/grpc/admin/export.go b/internal/api/grpc/admin/export.go index 6e4ed55402..30ae171f74 100644 --- a/internal/api/grpc/admin/export.go +++ b/internal/api/grpc/admin/export.go @@ -674,7 +674,7 @@ func (s *Server) getTriggerActions(ctx context.Context, org string, processedAct triggerActions := make([]*management_pb.SetTriggerActionsRequest, 0) for _, flowType := range flowTypes { - flow, err := s.query.GetFlow(ctx, flowType, org, false) + flow, err := s.query.GetFlow(ctx, flowType, org) if err != nil { return nil, err } @@ -731,7 +731,7 @@ func (s *Server) getProjectsAndApps(ctx context.Context, org string) ([]*v1_pb.D if err != nil { return nil, nil, nil, nil, nil, err } - queriedProjects, err := s.query.SearchProjects(ctx, &query.ProjectSearchQueries{Queries: []query.SearchQuery{projectSearch}}, false) + queriedProjects, err := s.query.SearchProjects(ctx, &query.ProjectSearchQueries{Queries: []query.SearchQuery{projectSearch}}) if err != nil { return nil, nil, nil, nil, nil, err } @@ -758,7 +758,7 @@ func (s *Server) getProjectsAndApps(ctx context.Context, org string) ([]*v1_pb.D return nil, nil, nil, nil, nil, err } - queriedProjectRoles, err := s.query.SearchProjectRoles(ctx, false, &query.ProjectRoleSearchQueries{Queries: []query.SearchQuery{projectRoleSearch}}, false) + queriedProjectRoles, err := s.query.SearchProjectRoles(ctx, false, &query.ProjectRoleSearchQueries{Queries: []query.SearchQuery{projectRoleSearch}}) if err != nil { return nil, nil, nil, nil, nil, err } @@ -866,7 +866,7 @@ func (s *Server) getNecessaryProjectGrantMembersForOrg(ctx context.Context, org return nil, err } - queriedProjectMembers, err := s.query.ProjectGrantMembers(ctx, &query.ProjectGrantMembersQuery{ProjectID: projectID, OrgID: org, GrantID: grantID, MembersQuery: query.MembersQuery{Queries: []query.SearchQuery{search}}}, false) + queriedProjectMembers, err := s.query.ProjectGrantMembers(ctx, &query.ProjectGrantMembersQuery{ProjectID: projectID, OrgID: org, GrantID: grantID, MembersQuery: query.MembersQuery{Queries: []query.SearchQuery{search}}}) if err != nil { return nil, err } @@ -894,7 +894,7 @@ func (s *Server) getNecessaryProjectMembersForOrg(ctx context.Context, processed projectMembers := make([]*management_pb.AddProjectMemberRequest, 0) for _, projectID := range processedProjects { - queriedProjectMembers, err := s.query.ProjectMembers(ctx, &query.ProjectMembersQuery{ProjectID: projectID}, false) + queriedProjectMembers, err := s.query.ProjectMembers(ctx, &query.ProjectMembersQuery{ProjectID: projectID}) if err != nil { return nil, err } @@ -915,7 +915,7 @@ func (s *Server) getNecessaryProjectMembersForOrg(ctx context.Context, processed } func (s *Server) getNecessaryOrgMembersForOrg(ctx context.Context, org string, processedUsers []string) ([]*management_pb.AddOrgMemberRequest, error) { - queriedOrgMembers, err := s.query.OrgMembers(ctx, &query.OrgMembersQuery{OrgID: org}, false) + queriedOrgMembers, err := s.query.OrgMembers(ctx, &query.OrgMembersQuery{OrgID: org}) if err != nil { return nil, err } @@ -940,7 +940,7 @@ func (s *Server) getNecessaryProjectGrantsForOrg(ctx context.Context, org string if err != nil { return nil, err } - queriedProjectGrants, err := s.query.SearchProjectGrants(ctx, &query.ProjectGrantSearchQueries{Queries: []query.SearchQuery{projectGrantSearchOrg}}, false) + queriedProjectGrants, err := s.query.SearchProjectGrants(ctx, &query.ProjectGrantSearchQueries{Queries: []query.SearchQuery{projectGrantSearchOrg}}) if err != nil { return nil, err } diff --git a/internal/api/grpc/admin/iam_member.go b/internal/api/grpc/admin/iam_member.go index 3e06e8223f..edd4dd0ce6 100644 --- a/internal/api/grpc/admin/iam_member.go +++ b/internal/api/grpc/admin/iam_member.go @@ -22,7 +22,7 @@ func (s *Server) ListIAMMembers(ctx context.Context, req *admin_pb.ListIAMMember if err != nil { return nil, err } - res, err := s.query.IAMMembers(ctx, queries, false) + res, err := s.query.IAMMembers(ctx, queries) if err != nil { return nil, err } diff --git a/internal/api/grpc/auth/permission.go b/internal/api/grpc/auth/permission.go index 4c0019cf57..519361dd3b 100644 --- a/internal/api/grpc/auth/permission.go +++ b/internal/api/grpc/auth/permission.go @@ -48,7 +48,7 @@ func (s *Server) ListMyMemberships(ctx context.Context, req *auth_pb.ListMyMembe if err != nil { return nil, err } - response, err := s.query.Memberships(ctx, request, false, false) + response, err := s.query.Memberships(ctx, request, false) if err != nil { return nil, err } diff --git a/internal/api/grpc/auth/user.go b/internal/api/grpc/auth/user.go index 87a146efe6..03a6e2f86a 100644 --- a/internal/api/grpc/auth/user.go +++ b/internal/api/grpc/auth/user.go @@ -44,7 +44,7 @@ func (s *Server) RemoveMyUser(ctx context.Context, _ *auth_pb.RemoveMyUserReques } memberships, err := s.query.Memberships(ctx, &query.MembershipSearchQuery{ Queries: []query.SearchQuery{userQuery}, - }, false, false) + }, false) if err != nil { return nil, err } @@ -238,7 +238,7 @@ func (s *Server) myOrgsQuery(ctx context.Context, ctxData authz.CtxData) (*query } return s.query.Memberships(ctx, &query.MembershipSearchQuery{ Queries: []query.SearchQuery{userQuery}, - }, false, false) + }, false) } func isIAMAdmin(memberships []*query.Membership) bool { diff --git a/internal/api/grpc/management/actions.go b/internal/api/grpc/management/actions.go index eedddd7fce..f5e214b72f 100644 --- a/internal/api/grpc/management/actions.go +++ b/internal/api/grpc/management/actions.go @@ -89,7 +89,7 @@ func (s *Server) ReactivateAction(ctx context.Context, req *mgmt_pb.ReactivateAc } func (s *Server) DeleteAction(ctx context.Context, req *mgmt_pb.DeleteActionRequest) (*mgmt_pb.DeleteActionResponse, error) { - flowTypes, err := s.query.GetFlowTypesOfActionID(ctx, req.Id, false) + flowTypes, err := s.query.GetFlowTypesOfActionID(ctx, req.Id) if err != nil { return nil, err } diff --git a/internal/api/grpc/management/flow.go b/internal/api/grpc/management/flow.go index 33f0739bad..8a38c80f2d 100644 --- a/internal/api/grpc/management/flow.go +++ b/internal/api/grpc/management/flow.go @@ -34,7 +34,7 @@ func (s *Server) ListFlowTriggerTypes(ctx context.Context, req *mgmt_pb.ListFlow } func (s *Server) GetFlow(ctx context.Context, req *mgmt_pb.GetFlowRequest) (*mgmt_pb.GetFlowResponse, error) { - flow, err := s.query.GetFlow(ctx, action_grpc.FlowTypeToDomain(req.Type), authz.GetCtxData(ctx).OrgID, false) + flow, err := s.query.GetFlow(ctx, action_grpc.FlowTypeToDomain(req.Type), authz.GetCtxData(ctx).OrgID) if err != nil { return nil, err } diff --git a/internal/api/grpc/management/org.go b/internal/api/grpc/management/org.go index 157537260a..e42082ed25 100644 --- a/internal/api/grpc/management/org.go +++ b/internal/api/grpc/management/org.go @@ -267,7 +267,7 @@ func (s *Server) ListOrgMembers(ctx context.Context, req *mgmt_pb.ListOrgMembers if err != nil { return nil, err } - members, err := s.query.OrgMembers(ctx, queries, false) + members, err := s.query.OrgMembers(ctx, queries) if err != nil { return nil, err } diff --git a/internal/api/grpc/management/project.go b/internal/api/grpc/management/project.go index fc43227c95..e0eaf21b11 100644 --- a/internal/api/grpc/management/project.go +++ b/internal/api/grpc/management/project.go @@ -15,7 +15,7 @@ import ( ) func (s *Server) GetProjectByID(ctx context.Context, req *mgmt_pb.GetProjectByIDRequest) (*mgmt_pb.GetProjectByIDResponse, error) { - project, err := s.query.ProjectByID(ctx, true, req.Id, false) + project, err := s.query.ProjectByID(ctx, true, req.Id) if err != nil { return nil, err } @@ -25,7 +25,7 @@ func (s *Server) GetProjectByID(ctx context.Context, req *mgmt_pb.GetProjectByID } func (s *Server) GetGrantedProjectByID(ctx context.Context, req *mgmt_pb.GetGrantedProjectByIDRequest) (*mgmt_pb.GetGrantedProjectByIDResponse, error) { - grant, err := s.query.ProjectGrantByID(ctx, true, req.GrantId, false) + grant, err := s.query.ProjectGrantByID(ctx, true, req.GrantId) if err != nil { return nil, err } @@ -47,7 +47,7 @@ func (s *Server) ListProjects(ctx context.Context, req *mgmt_pb.ListProjectsRequ if err != nil { return nil, err } - projects, err := s.query.SearchProjects(ctx, queries, false) + projects, err := s.query.SearchProjects(ctx, queries) if err != nil { return nil, err } @@ -110,7 +110,7 @@ func (s *Server) ListGrantedProjects(ctx context.Context, req *mgmt_pb.ListGrant if err != nil { return nil, err } - projects, err := s.query.SearchProjectGrants(ctx, queries, false) + projects, err := s.query.SearchProjectGrants(ctx, queries) if err != nil { return nil, err } @@ -129,7 +129,7 @@ func (s *Server) ListGrantedProjectRoles(ctx context.Context, req *mgmt_pb.ListG if err != nil { return nil, err } - roles, err := s.query.SearchGrantedProjectRoles(ctx, req.GrantId, authz.GetCtxData(ctx).OrgID, queries, false) + roles, err := s.query.SearchGrantedProjectRoles(ctx, req.GrantId, authz.GetCtxData(ctx).OrgID, queries) if err != nil { return nil, err } @@ -255,7 +255,7 @@ func (s *Server) ListProjectRoles(ctx context.Context, req *mgmt_pb.ListProjectR if err != nil { return nil, err } - roles, err := s.query.SearchProjectRoles(ctx, true, queries, false) + roles, err := s.query.SearchProjectRoles(ctx, true, queries) if err != nil { return nil, err } @@ -319,7 +319,7 @@ func (s *Server) RemoveProjectRole(ctx context.Context, req *mgmt_pb.RemoveProje if err != nil { return nil, err } - projectGrants, err := s.query.SearchProjectGrantsByProjectIDAndRoleKey(ctx, req.ProjectId, req.RoleKey, false) + projectGrants, err := s.query.SearchProjectGrantsByProjectIDAndRoleKey(ctx, req.ProjectId, req.RoleKey) if err != nil { return nil, err } @@ -345,7 +345,7 @@ func (s *Server) ListProjectMembers(ctx context.Context, req *mgmt_pb.ListProjec if err != nil { return nil, err } - members, err := s.query.ProjectMembers(ctx, queries, false) + members, err := s.query.ProjectMembers(ctx, queries) if err != nil { return nil, err } diff --git a/internal/api/grpc/management/project_grant.go b/internal/api/grpc/management/project_grant.go index d018dad39d..101068092a 100644 --- a/internal/api/grpc/management/project_grant.go +++ b/internal/api/grpc/management/project_grant.go @@ -13,7 +13,7 @@ import ( ) func (s *Server) GetProjectGrantByID(ctx context.Context, req *mgmt_pb.GetProjectGrantByIDRequest) (*mgmt_pb.GetProjectGrantByIDResponse, error) { - grant, err := s.query.ProjectGrantByID(ctx, true, req.GrantId, false) + grant, err := s.query.ProjectGrantByID(ctx, true, req.GrantId) if err != nil { return nil, err } @@ -31,7 +31,7 @@ func (s *Server) ListProjectGrants(ctx context.Context, req *mgmt_pb.ListProject if err != nil { return nil, err } - grants, err := s.query.SearchProjectGrants(ctx, queries, false) + grants, err := s.query.SearchProjectGrants(ctx, queries) if err != nil { return nil, err } @@ -54,7 +54,7 @@ func (s *Server) ListAllProjectGrants(ctx context.Context, req *mgmt_pb.ListAllP if err != nil { return nil, err } - grants, err := s.query.SearchProjectGrants(ctx, queries, false) + grants, err := s.query.SearchProjectGrants(ctx, queries) if err != nil { return nil, err } @@ -164,7 +164,7 @@ func (s *Server) ListProjectGrantMembers(ctx context.Context, req *mgmt_pb.ListP if err != nil { return nil, err } - response, err := s.query.ProjectGrantMembers(ctx, queries, false) + response, err := s.query.ProjectGrantMembers(ctx, queries) if err != nil { return nil, err } diff --git a/internal/api/grpc/management/user.go b/internal/api/grpc/management/user.go index 33b5606141..ae50c14693 100644 --- a/internal/api/grpc/management/user.go +++ b/internal/api/grpc/management/user.go @@ -384,7 +384,7 @@ func (s *Server) removeUserDependencies(ctx context.Context, userID string) ([]* } memberships, err := s.query.Memberships(ctx, &query.MembershipSearchQuery{ Queries: []query.SearchQuery{membershipsUserQuery}, - }, true, false) + }, false) if err != nil { return nil, nil, err } @@ -923,7 +923,7 @@ func (s *Server) ListUserMemberships(ctx context.Context, req *mgmt_pb.ListUserM if err != nil { return nil, err } - response, err := s.query.Memberships(ctx, request, false, false) + response, err := s.query.Memberships(ctx, request, false) if err != nil { return nil, err } diff --git a/internal/api/grpc/system/instance.go b/internal/api/grpc/system/instance.go index b4a1386fb8..97cc33061c 100644 --- a/internal/api/grpc/system/instance.go +++ b/internal/api/grpc/system/instance.go @@ -98,7 +98,7 @@ func (s *Server) ListIAMMembers(ctx context.Context, req *system_pb.ListIAMMembe if err != nil { return nil, err } - res, err := s.query.IAMMembers(ctx, queries, false) + res, err := s.query.IAMMembers(ctx, queries) if err != nil { return nil, err } diff --git a/internal/api/oidc/auth_request.go b/internal/api/oidc/auth_request.go index 267f674b2f..23fe695ff3 100644 --- a/internal/api/oidc/auth_request.go +++ b/internal/api/oidc/auth_request.go @@ -39,7 +39,7 @@ func (o *OPStorage) CreateAuthRequest(ctx context.Context, req *oidc.AuthRequest } func (o *OPStorage) createAuthRequestLoginClient(ctx context.Context, req *oidc.AuthRequest, hintUserID, loginClient string) (op.AuthRequest, error) { - project, err := o.query.ProjectByClientID(ctx, req.ClientID, false) + project, err := o.query.ProjectByClientID(ctx, req.ClientID) if err != nil { return nil, err } @@ -436,7 +436,7 @@ func (o *OPStorage) assertProjectRoleScopes(ctx context.Context, clientID string if err != nil { return nil, errors.ThrowPreconditionFailed(nil, "OIDC-AEG4d", "Errors.Internal") } - project, err := o.query.ProjectByID(ctx, false, projectID, false) + project, err := o.query.ProjectByID(ctx, false, projectID) if err != nil { return nil, errors.ThrowPreconditionFailed(nil, "OIDC-w4wIn", "Errors.Internal") } @@ -447,7 +447,7 @@ func (o *OPStorage) assertProjectRoleScopes(ctx context.Context, clientID string if err != nil { return nil, errors.ThrowInternal(err, "OIDC-Cyc78", "Errors.Internal") } - roles, err := o.query.SearchProjectRoles(ctx, true, &query.ProjectRoleSearchQueries{Queries: []query.SearchQuery{projectIDQuery}}, false) + roles, err := o.query.SearchProjectRoles(ctx, true, &query.ProjectRoleSearchQueries{Queries: []query.SearchQuery{projectIDQuery}}) if err != nil { return nil, err } @@ -470,7 +470,7 @@ func (o *OPStorage) assertProjectRoleScopesByProject(ctx context.Context, projec if err != nil { return nil, errors.ThrowInternal(err, "OIDC-Cyc78", "Errors.Internal") } - roles, err := o.query.SearchProjectRoles(ctx, true, &query.ProjectRoleSearchQueries{Queries: []query.SearchQuery{projectIDQuery}}, false) + roles, err := o.query.SearchProjectRoles(ctx, true, &query.ProjectRoleSearchQueries{Queries: []query.SearchQuery{projectIDQuery}}) if err != nil { return nil, err } @@ -486,7 +486,7 @@ func (o *OPStorage) assertClientScopesForPAT(ctx context.Context, token *model.T if err != nil { return errors.ThrowInternal(err, "OIDC-Cyc78", "Errors.Internal") } - roles, err := o.query.SearchProjectRoles(ctx, true, &query.ProjectRoleSearchQueries{Queries: []query.SearchQuery{projectIDQuery}}, false) + roles, err := o.query.SearchProjectRoles(ctx, true, &query.ProjectRoleSearchQueries{Queries: []query.SearchQuery{projectIDQuery}}) if err != nil { return err } diff --git a/internal/api/oidc/client.go b/internal/api/oidc/client.go index 7c56288171..56afe114ca 100644 --- a/internal/api/oidc/client.go +++ b/internal/api/oidc/client.go @@ -54,7 +54,7 @@ func (o *OPStorage) GetClientByClientID(ctx context.Context, id string) (_ op.Cl if err != nil { return nil, errors.ThrowInternal(err, "OIDC-mPxqP", "Errors.Internal") } - projectRoles, err := o.query.SearchProjectRoles(ctx, true, &query.ProjectRoleSearchQueries{Queries: []query.SearchQuery{projectIDQuery}}, false) + projectRoles, err := o.query.SearchProjectRoles(ctx, true, &query.ProjectRoleSearchQueries{Queries: []query.SearchQuery{projectIDQuery}}) if err != nil { return nil, err } @@ -458,7 +458,7 @@ func (o *OPStorage) setUserInfoRoleClaims(userInfo *oidc.UserInfo, roles *projec } func (o *OPStorage) userinfoFlows(ctx context.Context, user *query.User, userGrants *query.UserGrants, userInfo *oidc.UserInfo) error { - queriedActions, err := o.query.GetActiveActionsByFlowAndTriggerType(ctx, domain.FlowTypeCustomiseToken, domain.TriggerTypePreUserinfoCreation, user.ResourceOwner, false) + queriedActions, err := o.query.GetActiveActionsByFlowAndTriggerType(ctx, domain.FlowTypeCustomiseToken, domain.TriggerTypePreUserinfoCreation, user.ResourceOwner) if err != nil { return err } @@ -649,7 +649,7 @@ func (o *OPStorage) privateClaimsFlows(ctx context.Context, userID string, userG if err != nil { return nil, err } - queriedActions, err := o.query.GetActiveActionsByFlowAndTriggerType(ctx, domain.FlowTypeCustomiseToken, domain.TriggerTypePreAccessTokenCreation, user.ResourceOwner, false) + queriedActions, err := o.query.GetActiveActionsByFlowAndTriggerType(ctx, domain.FlowTypeCustomiseToken, domain.TriggerTypePreAccessTokenCreation, user.ResourceOwner) if err != nil { return nil, err } diff --git a/internal/api/saml/storage.go b/internal/api/saml/storage.go index 87e6960d48..cfe97ee3d4 100644 --- a/internal/api/saml/storage.go +++ b/internal/api/saml/storage.go @@ -216,7 +216,7 @@ func setUserinfo(user *query.User, userinfo models.AttributeSetter, attributes [ func (p *Storage) getCustomAttributes(ctx context.Context, user *query.User, userGrants *query.UserGrants) (map[string]*customAttribute, error) { customAttributes := make(map[string]*customAttribute, 0) - queriedActions, err := p.query.GetActiveActionsByFlowAndTriggerType(ctx, domain.FlowTypeCustomizeSAMLResponse, domain.TriggerTypePreSAMLResponseCreation, user.ResourceOwner, false) + queriedActions, err := p.query.GetActiveActionsByFlowAndTriggerType(ctx, domain.FlowTypeCustomizeSAMLResponse, domain.TriggerTypePreSAMLResponseCreation, user.ResourceOwner) if err != nil { return nil, err } diff --git a/internal/api/ui/login/custom_action.go b/internal/api/ui/login/custom_action.go index f7287dd1d2..d2acffb9ac 100644 --- a/internal/api/ui/login/custom_action.go +++ b/internal/api/ui/login/custom_action.go @@ -46,7 +46,7 @@ func (l *Login) runPostExternalAuthenticationActions( if resourceOwner == "" { resourceOwner = authz.GetInstance(ctx).DefaultOrganisationID() } - triggerActions, err := l.query.GetActiveActionsByFlowAndTriggerType(ctx, domain.FlowTypeExternalAuthentication, domain.TriggerTypePostAuthentication, resourceOwner, false) + triggerActions, err := l.query.GetActiveActionsByFlowAndTriggerType(ctx, domain.FlowTypeExternalAuthentication, domain.TriggerTypePostAuthentication, resourceOwner) if err != nil { return nil, false, err } @@ -168,7 +168,7 @@ func (l *Login) runPostInternalAuthenticationActions( resourceOwner = authRequest.UserOrgID } - triggerActions, err := l.query.GetActiveActionsByFlowAndTriggerType(ctx, domain.FlowTypeInternalAuthentication, domain.TriggerTypePostAuthentication, resourceOwner, false) + triggerActions, err := l.query.GetActiveActionsByFlowAndTriggerType(ctx, domain.FlowTypeInternalAuthentication, domain.TriggerTypePostAuthentication, resourceOwner) if err != nil { return nil, err } @@ -226,7 +226,7 @@ func (l *Login) runPreCreationActions( ) (*domain.Human, []*domain.Metadata, error) { ctx := httpRequest.Context() - triggerActions, err := l.query.GetActiveActionsByFlowAndTriggerType(ctx, flowType, domain.TriggerTypePreCreation, resourceOwner, false) + triggerActions, err := l.query.GetActiveActionsByFlowAndTriggerType(ctx, flowType, domain.TriggerTypePreCreation, resourceOwner) if err != nil { return nil, nil, err } @@ -326,7 +326,7 @@ func (l *Login) runPostCreationActions( ) ([]*domain.UserGrant, error) { ctx := httpRequest.Context() - triggerActions, err := l.query.GetActiveActionsByFlowAndTriggerType(ctx, flowType, domain.TriggerTypePostCreation, resourceOwner, false) + triggerActions, err := l.query.GetActiveActionsByFlowAndTriggerType(ctx, flowType, domain.TriggerTypePostCreation, resourceOwner) if err != nil { return nil, err } diff --git a/internal/auth/repository/eventsourcing/eventstore/auth_request.go b/internal/auth/repository/eventsourcing/eventstore/auth_request.go index 56bbafa825..445910b2f6 100644 --- a/internal/auth/repository/eventsourcing/eventstore/auth_request.go +++ b/internal/auth/repository/eventsourcing/eventstore/auth_request.go @@ -103,13 +103,13 @@ type orgViewProvider interface { } type userGrantProvider interface { - ProjectByClientID(context.Context, string, bool) (*query.Project, error) + ProjectByClientID(context.Context, string) (*query.Project, error) UserGrantsByProjectAndUserID(context.Context, string, string) ([]*query.UserGrant, error) } type projectProvider interface { - ProjectByClientID(context.Context, string, bool) (*query.Project, error) - SearchProjectGrants(ctx context.Context, queries *query.ProjectGrantSearchQueries, withOwnerRemoved bool) (projects *query.ProjectGrants, err error) + ProjectByClientID(context.Context, string) (*query.Project, error) + SearchProjectGrants(ctx context.Context, queries *query.ProjectGrantSearchQueries) (projects *query.ProjectGrants, err error) } type applicationProvider interface { @@ -132,7 +132,7 @@ func (repo *AuthRequestRepo) CreateAuthRequest(ctx context.Context, request *dom return nil, err } request.ID = reqID - project, err := repo.ProjectProvider.ProjectByClientID(ctx, request.ApplicationID, false) + project, err := repo.ProjectProvider.ProjectByClientID(ctx, request.ApplicationID) if err != nil { return nil, err } @@ -1617,7 +1617,7 @@ func userGrantRequired(ctx context.Context, request *domain.AuthRequest, user *u var project *query.Project switch request.Request.Type() { case domain.AuthRequestTypeOIDC, domain.AuthRequestTypeSAML, domain.AuthRequestTypeDevice: - project, err = userGrantProvider.ProjectByClientID(ctx, request.ApplicationID, false) + project, err = userGrantProvider.ProjectByClientID(ctx, request.ApplicationID) if err != nil { return false, err } @@ -1638,7 +1638,7 @@ func projectRequired(ctx context.Context, request *domain.AuthRequest, projectPr var project *query.Project switch request.Request.Type() { case domain.AuthRequestTypeOIDC, domain.AuthRequestTypeSAML, domain.AuthRequestTypeDevice: - project, err = projectProvider.ProjectByClientID(ctx, request.ApplicationID, false) + project, err = projectProvider.ProjectByClientID(ctx, request.ApplicationID) if err != nil { return false, err } @@ -1659,7 +1659,7 @@ func projectRequired(ctx context.Context, request *domain.AuthRequest, projectPr if err != nil { return false, err } - grants, err := projectProvider.SearchProjectGrants(ctx, &query.ProjectGrantSearchQueries{Queries: []query.SearchQuery{projectID, grantedOrg}}, false) + grants, err := projectProvider.SearchProjectGrants(ctx, &query.ProjectGrantSearchQueries{Queries: []query.SearchQuery{projectID, grantedOrg}}) if err != nil { return false, err } diff --git a/internal/auth/repository/eventsourcing/eventstore/auth_request_test.go b/internal/auth/repository/eventsourcing/eventstore/auth_request_test.go index 95ad95a32d..5eff6ac6ce 100644 --- a/internal/auth/repository/eventsourcing/eventstore/auth_request_test.go +++ b/internal/auth/repository/eventsourcing/eventstore/auth_request_test.go @@ -238,7 +238,7 @@ type mockUserGrants struct { userGrants int } -func (m *mockUserGrants) ProjectByClientID(ctx context.Context, s string, _ bool) (*query.Project, error) { +func (m *mockUserGrants) ProjectByClientID(ctx context.Context, s string) (*query.Project, error) { return &query.Project{ProjectRoleCheck: m.roleCheck}, nil } @@ -256,11 +256,11 @@ type mockProject struct { resourceOwner string } -func (m *mockProject) ProjectByClientID(ctx context.Context, s string, _ bool) (*query.Project, error) { +func (m *mockProject) ProjectByClientID(ctx context.Context, s string) (*query.Project, error) { return &query.Project{ResourceOwner: m.resourceOwner, HasProjectCheck: m.projectCheck}, nil } -func (m *mockProject) SearchProjectGrants(ctx context.Context, queries *query.ProjectGrantSearchQueries, _ bool) (*query.ProjectGrants, error) { +func (m *mockProject) SearchProjectGrants(ctx context.Context, queries *query.ProjectGrantSearchQueries) (*query.ProjectGrants, error) { if m.hasProject { mockProjectGrant := new(query.ProjectGrant) return &query.ProjectGrants{ProjectGrants: []*query.ProjectGrant{mockProjectGrant}}, nil diff --git a/internal/authz/repository/eventsourcing/eventstore/user_membership.go b/internal/authz/repository/eventsourcing/eventstore/user_membership.go index 06a67ca39f..f44d7d9652 100644 --- a/internal/authz/repository/eventsourcing/eventstore/user_membership.go +++ b/internal/authz/repository/eventsourcing/eventstore/user_membership.go @@ -41,7 +41,7 @@ func (repo *UserMembershipRepo) searchUserMemberships(ctx context.Context, orgID } memberships, err := repo.Queries.Memberships(ctx, &query.MembershipSearchQuery{ Queries: []query.SearchQuery{userIDQuery, query.Or(orgIDsQuery, grantedIDQuery)}, - }, false, shouldTriggerBulk) + }, shouldTriggerBulk) if err != nil { return nil, err } diff --git a/internal/query/action_flow.go b/internal/query/action_flow.go index 0b263041a3..a06d88b626 100644 --- a/internal/query/action_flow.go +++ b/internal/query/action_flow.go @@ -52,10 +52,6 @@ var ( name: projection.FlowActionIDCol, table: flowsTriggersTable, } - FlowsTriggersOwnerRemovedCol = Column{ - name: projection.FlowOwnerRemovedCol, - table: flowsTriggersTable, - } ) type Flow struct { @@ -67,7 +63,7 @@ type Flow struct { TriggerActions map[domain.TriggerType][]*Action } -func (q *Queries) GetFlow(ctx context.Context, flowType domain.FlowType, orgID string, withOwnerRemoved bool) (flow *Flow, err error) { +func (q *Queries) GetFlow(ctx context.Context, flowType domain.FlowType, orgID string) (flow *Flow, err error) { ctx, span := tracing.NewSpan(ctx) defer func() { span.EndWithError(err) }() @@ -77,9 +73,6 @@ func (q *Queries) GetFlow(ctx context.Context, flowType domain.FlowType, orgID s FlowsTriggersColumnResourceOwner.identifier(): orgID, FlowsTriggersColumnInstanceID.identifier(): authz.GetInstance(ctx).InstanceID(), } - if !withOwnerRemoved { - eq[FlowsTriggersOwnerRemovedCol.identifier()] = false - } stmt, args, err := query.Where(eq).ToSql() if err != nil { return nil, errors.ThrowInvalidArgument(err, "QUERY-HBRh3", "Errors.Query.InvalidRequest") @@ -92,7 +85,7 @@ func (q *Queries) GetFlow(ctx context.Context, flowType domain.FlowType, orgID s return flow, err } -func (q *Queries) GetActiveActionsByFlowAndTriggerType(ctx context.Context, flowType domain.FlowType, triggerType domain.TriggerType, orgID string, withOwnerRemoved bool) (actions []*Action, err error) { +func (q *Queries) GetActiveActionsByFlowAndTriggerType(ctx context.Context, flowType domain.FlowType, triggerType domain.TriggerType, orgID string) (actions []*Action, err error) { ctx, span := tracing.NewSpan(ctx) defer func() { span.EndWithError(err) }() @@ -104,9 +97,6 @@ func (q *Queries) GetActiveActionsByFlowAndTriggerType(ctx context.Context, flow FlowsTriggersColumnInstanceID.identifier(): authz.GetInstance(ctx).InstanceID(), ActionColumnState.identifier(): domain.ActionStateActive, } - if !withOwnerRemoved { - eq[FlowsTriggersOwnerRemovedCol.identifier()] = false - } query, args, err := stmt.Where(eq).ToSql() if err != nil { return nil, errors.ThrowInternal(err, "QUERY-Dgff3", "Errors.Query.SQLStatement") @@ -119,7 +109,7 @@ func (q *Queries) GetActiveActionsByFlowAndTriggerType(ctx context.Context, flow return actions, err } -func (q *Queries) GetFlowTypesOfActionID(ctx context.Context, actionID string, withOwnerRemoved bool) (types []domain.FlowType, err error) { +func (q *Queries) GetFlowTypesOfActionID(ctx context.Context, actionID string) (types []domain.FlowType, err error) { ctx, span := tracing.NewSpan(ctx) defer func() { span.EndWithError(err) }() @@ -128,9 +118,6 @@ func (q *Queries) GetFlowTypesOfActionID(ctx context.Context, actionID string, w FlowsTriggersColumnActionID.identifier(): actionID, FlowsTriggersColumnInstanceID.identifier(): authz.GetInstance(ctx).InstanceID(), } - if !withOwnerRemoved { - eq[FlowsTriggersOwnerRemovedCol.identifier()] = false - } query, args, err := stmt.Where(eq).ToSql() if err != nil { return nil, errors.ThrowInvalidArgument(err, "QUERY-Dh311", "Errors.Query.InvalidRequest") diff --git a/internal/query/action_flow_test.go b/internal/query/action_flow_test.go index 897bbd04f4..75f1ed22b4 100644 --- a/internal/query/action_flow_test.go +++ b/internal/query/action_flow_test.go @@ -26,15 +26,15 @@ var ( ` projections.actions3.script,` + ` projections.actions3.allowed_to_fail,` + ` projections.actions3.timeout,` + - ` projections.flow_triggers2.trigger_type,` + - ` projections.flow_triggers2.trigger_sequence,` + - ` projections.flow_triggers2.flow_type,` + - ` projections.flow_triggers2.change_date,` + - ` projections.flow_triggers2.sequence,` + - ` projections.flow_triggers2.resource_owner` + - ` FROM projections.flow_triggers2` + - ` LEFT JOIN projections.actions3 ON projections.flow_triggers2.action_id = projections.actions3.id AND projections.flow_triggers2.instance_id = projections.actions3.instance_id` - // ` AS OF SYSTEM TIME '-1 ms'` + ` projections.flow_triggers3.trigger_type,` + + ` projections.flow_triggers3.trigger_sequence,` + + ` projections.flow_triggers3.flow_type,` + + ` projections.flow_triggers3.change_date,` + + ` projections.flow_triggers3.sequence,` + + ` projections.flow_triggers3.resource_owner` + + ` FROM projections.flow_triggers3` + + ` LEFT JOIN projections.actions3 ON projections.flow_triggers3.action_id = projections.actions3.id AND projections.flow_triggers3.instance_id = projections.actions3.instance_id` + // ` AS OF SYSTEM TIME '-1 ms'` prepareFlowCols = []string{ "id", "creation_date", @@ -65,9 +65,9 @@ var ( ` projections.actions3.script,` + ` projections.actions3.allowed_to_fail,` + ` projections.actions3.timeout` + - ` FROM projections.flow_triggers2` + - ` LEFT JOIN projections.actions3 ON projections.flow_triggers2.action_id = projections.actions3.id AND projections.flow_triggers2.instance_id = projections.actions3.instance_id` - // ` AS OF SYSTEM TIME '-1 ms'` + ` FROM projections.flow_triggers3` + + ` LEFT JOIN projections.actions3 ON projections.flow_triggers3.action_id = projections.actions3.id AND projections.flow_triggers3.instance_id = projections.actions3.instance_id` + // ` AS OF SYSTEM TIME '-1 ms'` prepareTriggerActionCols = []string{ "id", @@ -82,9 +82,9 @@ var ( "timeout", } - prepareFlowTypeStmt = `SELECT projections.flow_triggers2.flow_type` + - ` FROM projections.flow_triggers2` - // ` AS OF SYSTEM TIME '-1 ms'` + prepareFlowTypeStmt = `SELECT projections.flow_triggers3.flow_type` + + ` FROM projections.flow_triggers3` + // ` AS OF SYSTEM TIME '-1 ms'` prepareFlowTypeCols = []string{ "flow_type", diff --git a/internal/query/app.go b/internal/query/app.go index 5289785893..7f39d4d82e 100644 --- a/internal/query/app.go +++ b/internal/query/app.go @@ -329,15 +329,12 @@ func (q *Queries) AppBySAMLEntityID(ctx context.Context, entityID string, withOw return app, err } -func (q *Queries) ProjectByClientID(ctx context.Context, appID string, withOwnerRemoved bool) (project *Project, err error) { +func (q *Queries) ProjectByClientID(ctx context.Context, appID string) (project *Project, err error) { ctx, span := tracing.NewSpan(ctx) defer func() { span.EndWithError(err) }() stmt, scan := prepareProjectByAppQuery(ctx, q.client) eq := sq.Eq{AppColumnInstanceID.identifier(): authz.GetInstance(ctx).InstanceID()} - if !withOwnerRemoved { - eq[ProjectColumnOwnerRemoved.identifier()] = false - } query, args, err := stmt.Where(sq.And{ eq, sq.Or{ diff --git a/internal/query/app_test.go b/internal/query/app_test.go index b98d43a789..424fd89983 100644 --- a/internal/query/app_test.go +++ b/internal/query/app_test.go @@ -108,19 +108,19 @@ var ( ` LEFT JOIN projections.apps5_oidc_configs ON projections.apps5.id = projections.apps5_oidc_configs.app_id AND projections.apps5.instance_id = projections.apps5_oidc_configs.instance_id` + ` LEFT JOIN projections.apps5_saml_configs ON projections.apps5.id = projections.apps5_saml_configs.app_id AND projections.apps5.instance_id = projections.apps5_saml_configs.instance_id` + ` AS OF SYSTEM TIME '-1 ms'`) - expectedProjectByAppQuery = regexp.QuoteMeta(`SELECT projections.projects3.id,` + - ` projections.projects3.creation_date,` + - ` projections.projects3.change_date,` + - ` projections.projects3.resource_owner,` + - ` projections.projects3.state,` + - ` projections.projects3.sequence,` + - ` projections.projects3.name,` + - ` projections.projects3.project_role_assertion,` + - ` projections.projects3.project_role_check,` + - ` projections.projects3.has_project_check,` + - ` projections.projects3.private_labeling_setting` + - ` FROM projections.projects3` + - ` JOIN projections.apps5 ON projections.projects3.id = projections.apps5.project_id AND projections.projects3.instance_id = projections.apps5.instance_id` + + expectedProjectByAppQuery = regexp.QuoteMeta(`SELECT projections.projects4.id,` + + ` projections.projects4.creation_date,` + + ` projections.projects4.change_date,` + + ` projections.projects4.resource_owner,` + + ` projections.projects4.state,` + + ` projections.projects4.sequence,` + + ` projections.projects4.name,` + + ` projections.projects4.project_role_assertion,` + + ` projections.projects4.project_role_check,` + + ` projections.projects4.has_project_check,` + + ` projections.projects4.private_labeling_setting` + + ` FROM projections.projects4` + + ` JOIN projections.apps5 ON projections.projects4.id = projections.apps5.project_id AND projections.projects4.instance_id = projections.apps5.instance_id` + ` LEFT JOIN projections.apps5_api_configs ON projections.apps5.id = projections.apps5_api_configs.app_id AND projections.apps5.instance_id = projections.apps5_api_configs.instance_id` + ` LEFT JOIN projections.apps5_oidc_configs ON projections.apps5.id = projections.apps5_oidc_configs.app_id AND projections.apps5.instance_id = projections.apps5_oidc_configs.instance_id` + ` LEFT JOIN projections.apps5_saml_configs ON projections.apps5.id = projections.apps5_saml_configs.app_id AND projections.apps5.instance_id = projections.apps5_saml_configs.instance_id` + diff --git a/internal/query/iam_member.go b/internal/query/iam_member.go index 9b60181916..ca30fc05f6 100644 --- a/internal/query/iam_member.go +++ b/internal/query/iam_member.go @@ -52,14 +52,6 @@ var ( name: projection.InstanceMemberIAMIDCol, table: instanceMemberTable, } - InstanceMemberOwnerRemoved = Column{ - name: projection.MemberOwnerRemoved, - table: instanceMemberTable, - } - InstanceMemberOwnerRemovedUser = Column{ - name: projection.MemberUserOwnerRemoved, - table: instanceMemberTable, - } ) type IAMMembersQuery struct { @@ -71,21 +63,12 @@ func (q *IAMMembersQuery) toQuery(query sq.SelectBuilder) sq.SelectBuilder { toQuery(query) } -func addIamMemberWithoutOwnerRemoved(eq map[string]interface{}) { - eq[InstanceMemberOwnerRemoved.identifier()] = false - eq[InstanceMemberOwnerRemovedUser.identifier()] = false -} - -func (q *Queries) IAMMembers(ctx context.Context, queries *IAMMembersQuery, withOwnerRemoved bool) (members *Members, err error) { +func (q *Queries) IAMMembers(ctx context.Context, queries *IAMMembersQuery) (members *Members, err error) { ctx, span := tracing.NewSpan(ctx) defer func() { span.EndWithError(err) }() query, scan := prepareInstanceMembersQuery(ctx, q.client) eq := sq.Eq{InstanceMemberInstanceID.identifier(): authz.GetInstance(ctx).InstanceID()} - if !withOwnerRemoved { - addIamMemberWithoutOwnerRemoved(eq) - addLoginNameWithoutOwnerRemoved(eq) - } stmt, args, err := queries.toQuery(query).Where(eq).ToSql() if err != nil { return nil, errors.ThrowInvalidArgument(err, "QUERY-USNwM", "Errors.Query.InvalidRequest") diff --git a/internal/query/iam_member_test.go b/internal/query/iam_member_test.go index 68e1f90f73..e76c3c3790 100644 --- a/internal/query/iam_member_test.go +++ b/internal/query/iam_member_test.go @@ -20,7 +20,7 @@ var ( ", members.resource_owner" + ", members.user_id" + ", members.roles" + - ", projections.login_names2.login_name" + + ", projections.login_names3.login_name" + ", projections.users8_humans.email" + ", projections.users8_humans.first_name" + ", projections.users8_humans.last_name" + @@ -29,17 +29,17 @@ var ( ", projections.users8_humans.avatar_key" + ", projections.users8.type" + ", COUNT(*) OVER () " + - "FROM projections.instance_members3 AS members " + + "FROM projections.instance_members4 AS members " + "LEFT JOIN projections.users8_humans " + "ON members.user_id = projections.users8_humans.user_id AND members.instance_id = projections.users8_humans.instance_id " + "LEFT JOIN projections.users8_machines " + "ON members.user_id = projections.users8_machines.user_id AND members.instance_id = projections.users8_machines.instance_id " + "LEFT JOIN projections.users8 " + "ON members.user_id = projections.users8.id AND members.instance_id = projections.users8.instance_id " + - "LEFT JOIN projections.login_names2 " + - "ON members.user_id = projections.login_names2.user_id AND members.instance_id = projections.login_names2.instance_id " + + "LEFT JOIN projections.login_names3 " + + "ON members.user_id = projections.login_names3.user_id AND members.instance_id = projections.login_names3.instance_id " + "AS OF SYSTEM TIME '-1 ms' " + - "WHERE projections.login_names2.is_primary = $1") + "WHERE projections.login_names3.is_primary = $1") instanceMembersColumns = []string{ "creation_date", "change_date", diff --git a/internal/query/login_name.go b/internal/query/login_name.go index 736f37f98a..77a7d8e677 100644 --- a/internal/query/login_name.go +++ b/internal/query/login_name.go @@ -23,22 +23,4 @@ var ( name: projection.LoginNameInstanceIDCol, table: loginNameTable, } - LoginNameOwnerRemovedDomainCol = Column{ - name: projection.LoginNameOwnerRemovedDomainCol, - table: loginNameTable, - } - LoginNameOwnerRemovedUserCol = Column{ - name: projection.LoginNameOwnerRemovedUserCol, - table: loginNameTable, - } - LoginNameOwnerRemovedPolicyCol = Column{ - name: projection.LoginNameOwnerRemovedPolicyCol, - table: loginNameTable, - } ) - -func addLoginNameWithoutOwnerRemoved(eq map[string]interface{}) { - eq[LoginNameOwnerRemovedDomainCol.identifier()] = false - eq[LoginNameOwnerRemovedUserCol.identifier()] = false - eq[LoginNameOwnerRemovedPolicyCol.identifier()] = false -} diff --git a/internal/query/org_member.go b/internal/query/org_member.go index 6b31eb27d0..4b5aed92d1 100644 --- a/internal/query/org_member.go +++ b/internal/query/org_member.go @@ -52,14 +52,6 @@ var ( name: projection.OrgMemberOrgIDCol, table: orgMemberTable, } - OrgMemberOwnerRemoved = Column{ - name: projection.MemberOwnerRemoved, - table: orgMemberTable, - } - OrgMemberOwnerRemovedUser = Column{ - name: projection.MemberUserOwnerRemoved, - table: orgMemberTable, - } ) type OrgMembersQuery struct { @@ -73,21 +65,12 @@ func (q *OrgMembersQuery) toQuery(query sq.SelectBuilder) sq.SelectBuilder { Where(sq.Eq{OrgMemberOrgID.identifier(): q.OrgID}) } -func addOrgMemberWithoutOwnerRemoved(eq map[string]interface{}) { - eq[OrgMemberOwnerRemoved.identifier()] = false - eq[OrgMemberOwnerRemovedUser.identifier()] = false -} - -func (q *Queries) OrgMembers(ctx context.Context, queries *OrgMembersQuery, withOwnerRemoved bool) (members *Members, err error) { +func (q *Queries) OrgMembers(ctx context.Context, queries *OrgMembersQuery) (members *Members, err error) { ctx, span := tracing.NewSpan(ctx) defer func() { span.EndWithError(err) }() query, scan := prepareOrgMembersQuery(ctx, q.client) eq := sq.Eq{OrgMemberInstanceID.identifier(): authz.GetInstance(ctx).InstanceID()} - if !withOwnerRemoved { - addOrgMemberWithoutOwnerRemoved(eq) - addLoginNameWithoutOwnerRemoved(eq) - } stmt, args, err := queries.toQuery(query).Where(eq).ToSql() if err != nil { return nil, errors.ThrowInvalidArgument(err, "QUERY-PDAVB", "Errors.Query.InvalidRequest") diff --git a/internal/query/org_member_test.go b/internal/query/org_member_test.go index ee599b0e57..bcd3adbf95 100644 --- a/internal/query/org_member_test.go +++ b/internal/query/org_member_test.go @@ -20,7 +20,7 @@ var ( ", members.resource_owner" + ", members.user_id" + ", members.roles" + - ", projections.login_names2.login_name" + + ", projections.login_names3.login_name" + ", projections.users8_humans.email" + ", projections.users8_humans.first_name" + ", projections.users8_humans.last_name" + @@ -29,7 +29,7 @@ var ( ", projections.users8_humans.avatar_key" + ", projections.users8.type" + ", COUNT(*) OVER () " + - "FROM projections.org_members3 AS members " + + "FROM projections.org_members4 AS members " + "LEFT JOIN projections.users8_humans " + "ON members.user_id = projections.users8_humans.user_id " + "AND members.instance_id = projections.users8_humans.instance_id " + @@ -39,11 +39,11 @@ var ( "LEFT JOIN projections.users8 " + "ON members.user_id = projections.users8.id " + "AND members.instance_id = projections.users8.instance_id " + - "LEFT JOIN projections.login_names2 " + - "ON members.user_id = projections.login_names2.user_id " + - "AND members.instance_id = projections.login_names2.instance_id " + + "LEFT JOIN projections.login_names3 " + + "ON members.user_id = projections.login_names3.user_id " + + "AND members.instance_id = projections.login_names3.instance_id " + "AS OF SYSTEM TIME '-1 ms' " + - "WHERE projections.login_names2.is_primary = $1") + "WHERE projections.login_names3.is_primary = $1") orgMembersColumns = []string{ "creation_date", "change_date", diff --git a/internal/query/project.go b/internal/query/project.go index b999d22f17..3876154b51 100644 --- a/internal/query/project.go +++ b/internal/query/project.go @@ -72,10 +72,6 @@ var ( name: projection.ProjectColumnState, table: projectsTable, } - ProjectColumnOwnerRemoved = Column{ - name: projection.ProjectColumnOwnerRemoved, - table: projectsTable, - } ) type Projects struct { @@ -103,7 +99,7 @@ type ProjectSearchQueries struct { Queries []SearchQuery } -func (q *Queries) ProjectByID(ctx context.Context, shouldTriggerBulk bool, id string, withOwnerRemoved bool) (project *Project, err error) { +func (q *Queries) ProjectByID(ctx context.Context, shouldTriggerBulk bool, id string) (project *Project, err error) { ctx, span := tracing.NewSpan(ctx) defer func() { span.EndWithError(err) }() @@ -119,9 +115,6 @@ func (q *Queries) ProjectByID(ctx context.Context, shouldTriggerBulk bool, id st ProjectColumnID.identifier(): id, ProjectColumnInstanceID.identifier(): authz.GetInstance(ctx).InstanceID(), } - if !withOwnerRemoved { - eq[ProjectColumnOwnerRemoved.identifier()] = false - } query, args, err := stmt.Where(eq).ToSql() if err != nil { return nil, errors.ThrowInternal(err, "QUERY-2m00Q", "Errors.Query.SQLStatment") @@ -134,15 +127,12 @@ func (q *Queries) ProjectByID(ctx context.Context, shouldTriggerBulk bool, id st return project, err } -func (q *Queries) SearchProjects(ctx context.Context, queries *ProjectSearchQueries, withOwnerRemoved bool) (projects *Projects, err error) { +func (q *Queries) SearchProjects(ctx context.Context, queries *ProjectSearchQueries) (projects *Projects, err error) { ctx, span := tracing.NewSpan(ctx) defer func() { span.EndWithError(err) }() query, scan := prepareProjectsQuery(ctx, q.client) eq := sq.Eq{ProjectColumnInstanceID.identifier(): authz.GetInstance(ctx).InstanceID()} - if !withOwnerRemoved { - eq[ProjectColumnOwnerRemoved.identifier()] = false - } stmt, args, err := queries.toQuery(query).Where(eq).ToSql() if err != nil { return nil, errors.ThrowInvalidArgument(err, "QUERY-fn9ew", "Errors.Query.InvalidRequest") diff --git a/internal/query/project_grant.go b/internal/query/project_grant.go index bcd6592cda..78fbc7cd6b 100644 --- a/internal/query/project_grant.go +++ b/internal/query/project_grant.go @@ -78,14 +78,6 @@ var ( name: projection.OrgColumnName, table: orgsTable.setAlias(ProjectGrantResourceOwnerTableAlias), } - ProjectGrantColumnOwnerRemoved = Column{ - name: projection.ProjectGrantColumnOwnerRemoved, - table: projectGrantsTable, - } - ProjectGrantColumnGrantGrantedOrgRemoved = Column{ - name: projection.ProjectGrantColumnGrantedOrgRemoved, - table: projectGrantsTable, - } ) type ProjectGrants struct { @@ -114,7 +106,7 @@ type ProjectGrantSearchQueries struct { Queries []SearchQuery } -func (q *Queries) ProjectGrantByID(ctx context.Context, shouldTriggerBulk bool, id string, withOwnerRemoved bool) (grant *ProjectGrant, err error) { +func (q *Queries) ProjectGrantByID(ctx context.Context, shouldTriggerBulk bool, id string) (grant *ProjectGrant, err error) { ctx, span := tracing.NewSpan(ctx) defer func() { span.EndWithError(err) }() @@ -130,10 +122,6 @@ func (q *Queries) ProjectGrantByID(ctx context.Context, shouldTriggerBulk bool, ProjectGrantColumnGrantID.identifier(): id, ProjectGrantColumnInstanceID.identifier(): authz.GetInstance(ctx).InstanceID(), } - if !withOwnerRemoved { - eq[ProjectGrantColumnOwnerRemoved.identifier()] = false - eq[ProjectGrantColumnGrantGrantedOrgRemoved.identifier()] = false - } query, args, err := stmt.Where(eq).ToSql() if err != nil { return nil, errors.ThrowInternal(err, "QUERY-Nf93d", "Errors.Query.SQLStatment") @@ -146,7 +134,7 @@ func (q *Queries) ProjectGrantByID(ctx context.Context, shouldTriggerBulk bool, return grant, err } -func (q *Queries) ProjectGrantByIDAndGrantedOrg(ctx context.Context, id, grantedOrg string, withOwnerRemoved bool) (grant *ProjectGrant, err error) { +func (q *Queries) ProjectGrantByIDAndGrantedOrg(ctx context.Context, id, grantedOrg string) (grant *ProjectGrant, err error) { ctx, span := tracing.NewSpan(ctx) defer func() { span.EndWithError(err) }() @@ -156,10 +144,6 @@ func (q *Queries) ProjectGrantByIDAndGrantedOrg(ctx context.Context, id, granted ProjectGrantColumnGrantedOrgID.identifier(): grantedOrg, ProjectGrantColumnInstanceID.identifier(): authz.GetInstance(ctx).InstanceID(), } - if !withOwnerRemoved { - eq[ProjectGrantColumnOwnerRemoved.identifier()] = false - eq[ProjectGrantColumnGrantGrantedOrgRemoved.identifier()] = false - } query, args, err := stmt.Where(eq).ToSql() if err != nil { return nil, errors.ThrowInternal(err, "QUERY-MO9fs", "Errors.Query.SQLStatment") @@ -172,7 +156,7 @@ func (q *Queries) ProjectGrantByIDAndGrantedOrg(ctx context.Context, id, granted return grant, err } -func (q *Queries) SearchProjectGrants(ctx context.Context, queries *ProjectGrantSearchQueries, withOwnerRemoved bool) (grants *ProjectGrants, err error) { +func (q *Queries) SearchProjectGrants(ctx context.Context, queries *ProjectGrantSearchQueries) (grants *ProjectGrants, err error) { ctx, span := tracing.NewSpan(ctx) defer func() { span.EndWithError(err) }() @@ -180,10 +164,6 @@ func (q *Queries) SearchProjectGrants(ctx context.Context, queries *ProjectGrant eq := sq.Eq{ ProjectGrantColumnInstanceID.identifier(): authz.GetInstance(ctx).InstanceID(), } - if !withOwnerRemoved { - eq[ProjectGrantColumnOwnerRemoved.identifier()] = false - eq[ProjectGrantColumnGrantGrantedOrgRemoved.identifier()] = false - } stmt, args, err := queries.toQuery(query).Where(eq).ToSql() if err != nil { return nil, errors.ThrowInvalidArgument(err, "QUERY-N9fsg", "Errors.Query.InvalidRequest") @@ -201,7 +181,7 @@ func (q *Queries) SearchProjectGrants(ctx context.Context, queries *ProjectGrant return grants, err } -func (q *Queries) SearchProjectGrantsByProjectIDAndRoleKey(ctx context.Context, projectID, roleKey string, withOwnerRemoved bool) (projects *ProjectGrants, err error) { +func (q *Queries) SearchProjectGrantsByProjectIDAndRoleKey(ctx context.Context, projectID, roleKey string) (projects *ProjectGrants, err error) { ctx, span := tracing.NewSpan(ctx) defer func() { span.EndWithError(err) }() @@ -217,7 +197,7 @@ func (q *Queries) SearchProjectGrantsByProjectIDAndRoleKey(ctx context.Context, if err != nil { return nil, err } - return q.SearchProjectGrants(ctx, searchQuery, withOwnerRemoved) + return q.SearchProjectGrants(ctx, searchQuery) } func NewProjectGrantProjectIDSearchQuery(value string) (SearchQuery, error) { diff --git a/internal/query/project_grant_member.go b/internal/query/project_grant_member.go index a6ee8dc29d..60eb0dc894 100644 --- a/internal/query/project_grant_member.go +++ b/internal/query/project_grant_member.go @@ -55,18 +55,6 @@ var ( name: projection.ProjectGrantMemberGrantIDCol, table: projectGrantMemberTable, } - ProjectGrantMemberOwnerRemoved = Column{ - name: projection.MemberOwnerRemoved, - table: projectGrantMemberTable, - } - ProjectGrantMemberUserOwnerRemoved = Column{ - name: projection.MemberUserOwnerRemoved, - table: projectGrantMemberTable, - } - ProjectGrantMemberGrantedOrgRemoved = Column{ - name: projection.ProjectGrantMemberGrantedOrgRemoved, - table: projectGrantMemberTable, - } ) type ProjectGrantMembersQuery struct { @@ -89,19 +77,9 @@ func (q *ProjectGrantMembersQuery) toQuery(query sq.SelectBuilder) sq.SelectBuil }) } -func addProjectGrantMemberWithoutOwnerRemoved(eq map[string]interface{}) { - eq[ProjectGrantMemberOwnerRemoved.identifier()] = false - eq[ProjectGrantMemberUserOwnerRemoved.identifier()] = false - eq[ProjectGrantMemberGrantedOrgRemoved.identifier()] = false -} - -func (q *Queries) ProjectGrantMembers(ctx context.Context, queries *ProjectGrantMembersQuery, withOwnerRemoved bool) (members *Members, err error) { +func (q *Queries) ProjectGrantMembers(ctx context.Context, queries *ProjectGrantMembersQuery) (members *Members, err error) { query, scan := prepareProjectGrantMembersQuery(ctx, q.client) eq := sq.Eq{ProjectGrantMemberInstanceID.identifier(): authz.GetInstance(ctx).InstanceID()} - if !withOwnerRemoved { - addProjectGrantMemberWithoutOwnerRemoved(eq) - addLoginNameWithoutOwnerRemoved(eq) - } stmt, args, err := queries.toQuery(query).Where(eq).ToSql() if err != nil { return nil, errors.ThrowInvalidArgument(err, "QUERY-USNwM", "Errors.Query.InvalidRequest") diff --git a/internal/query/project_grant_member_test.go b/internal/query/project_grant_member_test.go index adb1c506e5..43eb926899 100644 --- a/internal/query/project_grant_member_test.go +++ b/internal/query/project_grant_member_test.go @@ -20,7 +20,7 @@ var ( ", members.resource_owner" + ", members.user_id" + ", members.roles" + - ", projections.login_names2.login_name" + + ", projections.login_names3.login_name" + ", projections.users8_humans.email" + ", projections.users8_humans.first_name" + ", projections.users8_humans.last_name" + @@ -29,7 +29,7 @@ var ( ", projections.users8_humans.avatar_key" + ", projections.users8.type" + ", COUNT(*) OVER () " + - "FROM projections.project_grant_members3 AS members " + + "FROM projections.project_grant_members4 AS members " + "LEFT JOIN projections.users8_humans " + "ON members.user_id = projections.users8_humans.user_id " + "AND members.instance_id = projections.users8_humans.instance_id " + @@ -39,14 +39,14 @@ var ( "LEFT JOIN projections.users8 " + "ON members.user_id = projections.users8.id " + "AND members.instance_id = projections.users8.instance_id " + - "LEFT JOIN projections.login_names2 " + - "ON members.user_id = projections.login_names2.user_id " + - "AND members.instance_id = projections.login_names2.instance_id " + - "LEFT JOIN projections.project_grants3 " + - "ON members.grant_id = projections.project_grants3.grant_id " + - "AND members.instance_id = projections.project_grants3.instance_id " + + "LEFT JOIN projections.login_names3 " + + "ON members.user_id = projections.login_names3.user_id " + + "AND members.instance_id = projections.login_names3.instance_id " + + "LEFT JOIN projections.project_grants4 " + + "ON members.grant_id = projections.project_grants4.grant_id " + + "AND members.instance_id = projections.project_grants4.instance_id " + `AS OF SYSTEM TIME '-1 ms' ` + - "WHERE projections.login_names2.is_primary = $1") + "WHERE projections.login_names3.is_primary = $1") projectGrantMembersColumns = []string{ "creation_date", "change_date", diff --git a/internal/query/project_grant_test.go b/internal/query/project_grant_test.go index e67d2ad17d..e76fd96119 100644 --- a/internal/query/project_grant_test.go +++ b/internal/query/project_grant_test.go @@ -14,23 +14,23 @@ import ( ) var ( - projectGrantsQuery = `SELECT projections.project_grants3.project_id,` + - ` projections.project_grants3.grant_id,` + - ` projections.project_grants3.creation_date,` + - ` projections.project_grants3.change_date,` + - ` projections.project_grants3.resource_owner,` + - ` projections.project_grants3.state,` + - ` projections.project_grants3.sequence,` + - ` projections.projects3.name,` + - ` projections.project_grants3.granted_org_id,` + + projectGrantsQuery = `SELECT projections.project_grants4.project_id,` + + ` projections.project_grants4.grant_id,` + + ` projections.project_grants4.creation_date,` + + ` projections.project_grants4.change_date,` + + ` projections.project_grants4.resource_owner,` + + ` projections.project_grants4.state,` + + ` projections.project_grants4.sequence,` + + ` projections.projects4.name,` + + ` projections.project_grants4.granted_org_id,` + ` o.name,` + - ` projections.project_grants3.granted_role_keys,` + + ` projections.project_grants4.granted_role_keys,` + ` r.name,` + ` COUNT(*) OVER () ` + - ` FROM projections.project_grants3 ` + - ` LEFT JOIN projections.projects3 ON projections.project_grants3.project_id = projections.projects3.id AND projections.project_grants3.instance_id = projections.projects3.instance_id ` + - ` LEFT JOIN projections.orgs1 AS r ON projections.project_grants3.resource_owner = r.id AND projections.project_grants3.instance_id = r.instance_id` + - ` LEFT JOIN projections.orgs1 AS o ON projections.project_grants3.granted_org_id = o.id AND projections.project_grants3.instance_id = o.instance_id` + + ` FROM projections.project_grants4 ` + + ` LEFT JOIN projections.projects4 ON projections.project_grants4.project_id = projections.projects4.id AND projections.project_grants4.instance_id = projections.projects4.instance_id ` + + ` LEFT JOIN projections.orgs1 AS r ON projections.project_grants4.resource_owner = r.id AND projections.project_grants4.instance_id = r.instance_id` + + ` LEFT JOIN projections.orgs1 AS o ON projections.project_grants4.granted_org_id = o.id AND projections.project_grants4.instance_id = o.instance_id` + ` AS OF SYSTEM TIME '-1 ms'` projectGrantsCols = []string{ "project_id", @@ -47,22 +47,22 @@ var ( "name", "count", } - projectGrantQuery = `SELECT projections.project_grants3.project_id,` + - ` projections.project_grants3.grant_id,` + - ` projections.project_grants3.creation_date,` + - ` projections.project_grants3.change_date,` + - ` projections.project_grants3.resource_owner,` + - ` projections.project_grants3.state,` + - ` projections.project_grants3.sequence,` + - ` projections.projects3.name,` + - ` projections.project_grants3.granted_org_id,` + + projectGrantQuery = `SELECT projections.project_grants4.project_id,` + + ` projections.project_grants4.grant_id,` + + ` projections.project_grants4.creation_date,` + + ` projections.project_grants4.change_date,` + + ` projections.project_grants4.resource_owner,` + + ` projections.project_grants4.state,` + + ` projections.project_grants4.sequence,` + + ` projections.projects4.name,` + + ` projections.project_grants4.granted_org_id,` + ` o.name,` + - ` projections.project_grants3.granted_role_keys,` + + ` projections.project_grants4.granted_role_keys,` + ` r.name` + - ` FROM projections.project_grants3 ` + - ` LEFT JOIN projections.projects3 ON projections.project_grants3.project_id = projections.projects3.id AND projections.project_grants3.instance_id = projections.projects3.instance_id ` + - ` LEFT JOIN projections.orgs1 AS r ON projections.project_grants3.resource_owner = r.id AND projections.project_grants3.instance_id = r.instance_id` + - ` LEFT JOIN projections.orgs1 AS o ON projections.project_grants3.granted_org_id = o.id AND projections.project_grants3.instance_id = o.instance_id` + + ` FROM projections.project_grants4 ` + + ` LEFT JOIN projections.projects4 ON projections.project_grants4.project_id = projections.projects4.id AND projections.project_grants4.instance_id = projections.projects4.instance_id ` + + ` LEFT JOIN projections.orgs1 AS r ON projections.project_grants4.resource_owner = r.id AND projections.project_grants4.instance_id = r.instance_id` + + ` LEFT JOIN projections.orgs1 AS o ON projections.project_grants4.granted_org_id = o.id AND projections.project_grants4.instance_id = o.instance_id` + ` AS OF SYSTEM TIME '-1 ms'` projectGrantCols = []string{ "project_id", diff --git a/internal/query/project_member.go b/internal/query/project_member.go index 47c937be59..989b608732 100644 --- a/internal/query/project_member.go +++ b/internal/query/project_member.go @@ -52,14 +52,6 @@ var ( name: projection.ProjectMemberProjectIDCol, table: projectMemberTable, } - ProjectMemberOwnerRemoved = Column{ - name: projection.MemberOwnerRemoved, - table: orgMemberTable, - } - ProjectMemberOwnerRemovedUser = Column{ - name: projection.MemberUserOwnerRemoved, - table: orgMemberTable, - } ) type ProjectMembersQuery struct { @@ -73,21 +65,12 @@ func (q *ProjectMembersQuery) toQuery(query sq.SelectBuilder) sq.SelectBuilder { Where(sq.Eq{ProjectMemberProjectID.identifier(): q.ProjectID}) } -func addProjectMemberWithoutOwnerRemoved(eq map[string]interface{}) { - eq[ProjectMemberOwnerRemoved.identifier()] = false - eq[ProjectMemberOwnerRemovedUser.identifier()] = false -} - -func (q *Queries) ProjectMembers(ctx context.Context, queries *ProjectMembersQuery, withOwnerRemoved bool) (members *Members, err error) { +func (q *Queries) ProjectMembers(ctx context.Context, queries *ProjectMembersQuery) (members *Members, err error) { ctx, span := tracing.NewSpan(ctx) defer func() { span.EndWithError(err) }() query, scan := prepareProjectMembersQuery(ctx, q.client) eq := sq.Eq{ProjectMemberInstanceID.identifier(): authz.GetInstance(ctx).InstanceID()} - if !withOwnerRemoved { - addProjectMemberWithoutOwnerRemoved(eq) - addLoginNameWithoutOwnerRemoved(eq) - } stmt, args, err := queries.toQuery(query).Where(eq).ToSql() if err != nil { return nil, errors.ThrowInvalidArgument(err, "QUERY-T8CuT", "Errors.Query.InvalidRequest") diff --git a/internal/query/project_member_test.go b/internal/query/project_member_test.go index f102cff63f..45caf42dc9 100644 --- a/internal/query/project_member_test.go +++ b/internal/query/project_member_test.go @@ -20,7 +20,7 @@ var ( ", members.resource_owner" + ", members.user_id" + ", members.roles" + - ", projections.login_names2.login_name" + + ", projections.login_names3.login_name" + ", projections.users8_humans.email" + ", projections.users8_humans.first_name" + ", projections.users8_humans.last_name" + @@ -29,7 +29,7 @@ var ( ", projections.users8_humans.avatar_key" + ", projections.users8.type" + ", COUNT(*) OVER () " + - "FROM projections.project_members3 AS members " + + "FROM projections.project_members4 AS members " + "LEFT JOIN projections.users8_humans " + "ON members.user_id = projections.users8_humans.user_id " + "AND members.instance_id = projections.users8_humans.instance_id " + @@ -39,11 +39,11 @@ var ( "LEFT JOIN projections.users8 " + "ON members.user_id = projections.users8.id " + "AND members.instance_id = projections.users8.instance_id " + - "LEFT JOIN projections.login_names2 " + - "ON members.user_id = projections.login_names2.user_id " + - "AND members.instance_id = projections.login_names2.instance_id " + + "LEFT JOIN projections.login_names3 " + + "ON members.user_id = projections.login_names3.user_id " + + "AND members.instance_id = projections.login_names3.instance_id " + `AS OF SYSTEM TIME '-1 ms' ` + - "WHERE projections.login_names2.is_primary = $1") + "WHERE projections.login_names3.is_primary = $1") projectMembersColumns = []string{ "creation_date", "change_date", diff --git a/internal/query/project_role.go b/internal/query/project_role.go index 3549753141..e7a3fe288d 100644 --- a/internal/query/project_role.go +++ b/internal/query/project_role.go @@ -58,10 +58,6 @@ var ( name: projection.ProjectRoleColumnGroupName, table: projectRolesTable, } - ProjectRoleColumnOwnerRemoved = Column{ - name: projection.ProjectRoleColumnOwnerRemoved, - table: projectRolesTable, - } ) type ProjectRoles struct { @@ -86,7 +82,7 @@ type ProjectRoleSearchQueries struct { Queries []SearchQuery } -func (q *Queries) SearchProjectRoles(ctx context.Context, shouldTriggerBulk bool, queries *ProjectRoleSearchQueries, withOwnerRemoved bool) (roles *ProjectRoles, err error) { +func (q *Queries) SearchProjectRoles(ctx context.Context, shouldTriggerBulk bool, queries *ProjectRoleSearchQueries) (roles *ProjectRoles, err error) { ctx, span := tracing.NewSpan(ctx) defer func() { span.EndWithError(err) }() @@ -98,9 +94,6 @@ func (q *Queries) SearchProjectRoles(ctx context.Context, shouldTriggerBulk bool } eq := sq.Eq{ProjectRoleColumnInstanceID.identifier(): authz.GetInstance(ctx).InstanceID()} - if !withOwnerRemoved { - eq[ProjectRoleColumnOwnerRemoved.identifier()] = false - } query, scan := prepareProjectRolesQuery(ctx, q.client) stmt, args, err := queries.toQuery(query).Where(eq).ToSql() @@ -119,11 +112,11 @@ func (q *Queries) SearchProjectRoles(ctx context.Context, shouldTriggerBulk bool return roles, err } -func (q *Queries) SearchGrantedProjectRoles(ctx context.Context, grantID, grantedOrg string, queries *ProjectRoleSearchQueries, withOwnerRemoved bool) (roles *ProjectRoles, err error) { +func (q *Queries) SearchGrantedProjectRoles(ctx context.Context, grantID, grantedOrg string, queries *ProjectRoleSearchQueries) (roles *ProjectRoles, err error) { ctx, span := tracing.NewSpan(ctx) defer func() { span.EndWithError(err) }() - grant, err := q.ProjectGrantByIDAndGrantedOrg(ctx, grantID, grantedOrg, withOwnerRemoved) + grant, err := q.ProjectGrantByIDAndGrantedOrg(ctx, grantID, grantedOrg) if err != nil { return nil, err } @@ -133,9 +126,6 @@ func (q *Queries) SearchGrantedProjectRoles(ctx context.Context, grantID, grante } eq := sq.Eq{ProjectRoleColumnInstanceID.identifier(): authz.GetInstance(ctx).InstanceID()} - if !withOwnerRemoved { - eq[ProjectRoleColumnOwnerRemoved.identifier()] = false - } query, scan := prepareProjectRolesQuery(ctx, q.client) stmt, args, err := queries.toQuery(query).Where(eq).ToSql() diff --git a/internal/query/project_role_test.go b/internal/query/project_role_test.go index dbc646d4d3..516a4df169 100644 --- a/internal/query/project_role_test.go +++ b/internal/query/project_role_test.go @@ -10,16 +10,16 @@ import ( ) var ( - prepareProjectRolesStmt = `SELECT projections.project_roles3.project_id,` + - ` projections.project_roles3.creation_date,` + - ` projections.project_roles3.change_date,` + - ` projections.project_roles3.resource_owner,` + - ` projections.project_roles3.sequence,` + - ` projections.project_roles3.role_key,` + - ` projections.project_roles3.display_name,` + - ` projections.project_roles3.group_name,` + + prepareProjectRolesStmt = `SELECT projections.project_roles4.project_id,` + + ` projections.project_roles4.creation_date,` + + ` projections.project_roles4.change_date,` + + ` projections.project_roles4.resource_owner,` + + ` projections.project_roles4.sequence,` + + ` projections.project_roles4.role_key,` + + ` projections.project_roles4.display_name,` + + ` projections.project_roles4.group_name,` + ` COUNT(*) OVER ()` + - ` FROM projections.project_roles3` + + ` FROM projections.project_roles4` + ` AS OF SYSTEM TIME '-1 ms'` prepareProjectRolesCols = []string{ "project_id", diff --git a/internal/query/project_test.go b/internal/query/project_test.go index 4d4bd72ea4..eadc60430a 100644 --- a/internal/query/project_test.go +++ b/internal/query/project_test.go @@ -27,19 +27,19 @@ var ( "private_labeling_setting", } - prepareProjectsStmt = `SELECT projections.projects3.id,` + - ` projections.projects3.creation_date,` + - ` projections.projects3.change_date,` + - ` projections.projects3.resource_owner,` + - ` projections.projects3.state,` + - ` projections.projects3.sequence,` + - ` projections.projects3.name,` + - ` projections.projects3.project_role_assertion,` + - ` projections.projects3.project_role_check,` + - ` projections.projects3.has_project_check,` + - ` projections.projects3.private_labeling_setting,` + + prepareProjectsStmt = `SELECT projections.projects4.id,` + + ` projections.projects4.creation_date,` + + ` projections.projects4.change_date,` + + ` projections.projects4.resource_owner,` + + ` projections.projects4.state,` + + ` projections.projects4.sequence,` + + ` projections.projects4.name,` + + ` projections.projects4.project_role_assertion,` + + ` projections.projects4.project_role_check,` + + ` projections.projects4.has_project_check,` + + ` projections.projects4.private_labeling_setting,` + ` COUNT(*) OVER ()` + - ` FROM projections.projects3` + + ` FROM projections.projects4` + ` AS OF SYSTEM TIME '-1 ms'` prepareProjectsCols = []string{ "id", @@ -56,18 +56,18 @@ var ( "count", } - prepareProjectStmt = `SELECT projections.projects3.id,` + - ` projections.projects3.creation_date,` + - ` projections.projects3.change_date,` + - ` projections.projects3.resource_owner,` + - ` projections.projects3.state,` + - ` projections.projects3.sequence,` + - ` projections.projects3.name,` + - ` projections.projects3.project_role_assertion,` + - ` projections.projects3.project_role_check,` + - ` projections.projects3.has_project_check,` + - ` projections.projects3.private_labeling_setting` + - ` FROM projections.projects3` + + prepareProjectStmt = `SELECT projections.projects4.id,` + + ` projections.projects4.creation_date,` + + ` projections.projects4.change_date,` + + ` projections.projects4.resource_owner,` + + ` projections.projects4.state,` + + ` projections.projects4.sequence,` + + ` projections.projects4.name,` + + ` projections.projects4.project_role_assertion,` + + ` projections.projects4.project_role_check,` + + ` projections.projects4.has_project_check,` + + ` projections.projects4.private_labeling_setting` + + ` FROM projections.projects4` + ` AS OF SYSTEM TIME '-1 ms'` prepareProjectCols = []string{ "id", diff --git a/internal/query/projection/flow.go b/internal/query/projection/flow.go index 5375ba858d..5d03d8f07d 100644 --- a/internal/query/projection/flow.go +++ b/internal/query/projection/flow.go @@ -12,7 +12,7 @@ import ( ) const ( - FlowTriggerTable = "projections.flow_triggers2" + FlowTriggerTable = "projections.flow_triggers3" FlowTypeCol = "flow_type" FlowChangeDateCol = "change_date" FlowSequenceCol = "sequence" @@ -21,7 +21,6 @@ const ( FlowInstanceIDCol = "instance_id" FlowActionTriggerSequenceCol = "trigger_sequence" FlowActionIDCol = "action_id" - FlowOwnerRemovedCol = "owner_removed" ) type flowProjection struct{} @@ -45,10 +44,8 @@ func (*flowProjection) Init() *old_handler.Check { handler.NewColumn(FlowInstanceIDCol, handler.ColumnTypeText), handler.NewColumn(FlowActionTriggerSequenceCol, handler.ColumnTypeInt64), handler.NewColumn(FlowActionIDCol, handler.ColumnTypeText), - handler.NewColumn(FlowOwnerRemovedCol, handler.ColumnTypeBool, handler.Default(false)), }, handler.NewPrimaryKey(FlowInstanceIDCol, FlowTypeCol, FlowTriggerTypeCol, FlowResourceOwnerCol, FlowActionIDCol), - handler.WithIndex(handler.NewIndex("owner_removed", []string{FlowOwnerRemovedCol})), ), ) } diff --git a/internal/query/projection/flow_test.go b/internal/query/projection/flow_test.go index ca85c312c4..757aea548b 100644 --- a/internal/query/projection/flow_test.go +++ b/internal/query/projection/flow_test.go @@ -38,7 +38,7 @@ func TestFlowProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "DELETE FROM projections.flow_triggers2 WHERE (flow_type = $1) AND (trigger_type = $2) AND (resource_owner = $3) AND (instance_id = $4)", + expectedStmt: "DELETE FROM projections.flow_triggers3 WHERE (flow_type = $1) AND (trigger_type = $2) AND (resource_owner = $3) AND (instance_id = $4)", expectedArgs: []interface{}{ domain.FlowTypeExternalAuthentication, domain.TriggerTypePostAuthentication, @@ -47,7 +47,7 @@ func TestFlowProjection_reduces(t *testing.T) { }, }, { - expectedStmt: "INSERT INTO projections.flow_triggers2 (resource_owner, instance_id, flow_type, change_date, sequence, trigger_type, action_id, trigger_sequence) VALUES ($1, $2, $3, $4, $5, $6, $7, $8)", + expectedStmt: "INSERT INTO projections.flow_triggers3 (resource_owner, instance_id, flow_type, change_date, sequence, trigger_type, action_id, trigger_sequence) VALUES ($1, $2, $3, $4, $5, $6, $7, $8)", expectedArgs: []interface{}{ "ro-id", "instance-id", @@ -60,7 +60,7 @@ func TestFlowProjection_reduces(t *testing.T) { }, }, { - expectedStmt: "INSERT INTO projections.flow_triggers2 (resource_owner, instance_id, flow_type, change_date, sequence, trigger_type, action_id, trigger_sequence) VALUES ($1, $2, $3, $4, $5, $6, $7, $8)", + expectedStmt: "INSERT INTO projections.flow_triggers3 (resource_owner, instance_id, flow_type, change_date, sequence, trigger_type, action_id, trigger_sequence) VALUES ($1, $2, $3, $4, $5, $6, $7, $8)", expectedArgs: []interface{}{ "ro-id", "instance-id", @@ -93,7 +93,7 @@ func TestFlowProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "DELETE FROM projections.flow_triggers2 WHERE (flow_type = $1) AND (resource_owner = $2) AND (instance_id = $3)", + expectedStmt: "DELETE FROM projections.flow_triggers3 WHERE (flow_type = $1) AND (resource_owner = $2) AND (instance_id = $3)", expectedArgs: []interface{}{ domain.FlowTypeExternalAuthentication, "ro-id", @@ -121,7 +121,7 @@ func TestFlowProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "DELETE FROM projections.flow_triggers2 WHERE (instance_id = $1) AND (resource_owner = $2)", + expectedStmt: "DELETE FROM projections.flow_triggers3 WHERE (instance_id = $1) AND (resource_owner = $2)", expectedArgs: []interface{}{ "instance-id", "agg-id", @@ -148,7 +148,7 @@ func TestFlowProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "DELETE FROM projections.flow_triggers2 WHERE (instance_id = $1)", + expectedStmt: "DELETE FROM projections.flow_triggers3 WHERE (instance_id = $1)", expectedArgs: []interface{}{ "agg-id", }, diff --git a/internal/query/projection/instance_member.go b/internal/query/projection/instance_member.go index bf9daba6f5..f58d098102 100644 --- a/internal/query/projection/instance_member.go +++ b/internal/query/projection/instance_member.go @@ -13,7 +13,7 @@ import ( ) const ( - InstanceMemberProjectionTable = "projections.instance_members3" + InstanceMemberProjectionTable = "projections.instance_members4" InstanceMemberIAMIDCol = "id" ) @@ -36,17 +36,14 @@ func (*instanceMemberProjection) Init() *old_handler.Check { append(memberColumns, handler.NewColumn(InstanceColumnID, handler.ColumnTypeText)), handler.NewPrimaryKey(MemberInstanceID, InstanceColumnID, MemberUserIDCol), handler.WithIndex(handler.NewIndex("user_id", []string{MemberUserIDCol})), - handler.WithIndex(handler.NewIndex("user_owner_removed", []string{MemberUserOwnerRemoved})), handler.WithIndex( handler.NewIndex("im_instance", []string{MemberInstanceID}, handler.WithInclude( MemberCreationDate, MemberChangeDate, - MemberUserOwnerRemoved, MemberRolesCol, MemberSequence, MemberResourceOwner, - MemberOwnerRemoved, ), ), ), diff --git a/internal/query/projection/instance_member_test.go b/internal/query/projection/instance_member_test.go index bc1605aa17..5631407439 100644 --- a/internal/query/projection/instance_member_test.go +++ b/internal/query/projection/instance_member_test.go @@ -63,18 +63,16 @@ func TestInstanceMemberProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "INSERT INTO projections.instance_members3 (user_id, user_resource_owner, user_owner_removed, roles, creation_date, change_date, sequence, resource_owner, instance_id, owner_removed, id) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11)", + expectedStmt: "INSERT INTO projections.instance_members4 (user_id, user_resource_owner, roles, creation_date, change_date, sequence, resource_owner, instance_id, id) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9)", expectedArgs: []interface{}{ "user-id", "org1", - false, database.TextArray[string]{"role"}, anyArg{}, anyArg{}, uint64(15), "ro-id", "instance-id", - false, "agg-id", }, }, @@ -102,7 +100,7 @@ func TestInstanceMemberProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "UPDATE projections.instance_members3 SET (roles, change_date, sequence) = ($1, $2, $3) WHERE (instance_id = $4) AND (user_id = $5)", + expectedStmt: "UPDATE projections.instance_members4 SET (roles, change_date, sequence) = ($1, $2, $3) WHERE (instance_id = $4) AND (user_id = $5)", expectedArgs: []interface{}{ database.TextArray[string]{"role", "changed"}, anyArg{}, @@ -134,7 +132,7 @@ func TestInstanceMemberProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "DELETE FROM projections.instance_members3 WHERE (instance_id = $1) AND (user_id = $2)", + expectedStmt: "DELETE FROM projections.instance_members4 WHERE (instance_id = $1) AND (user_id = $2)", expectedArgs: []interface{}{ "instance-id", "user-id", @@ -163,7 +161,7 @@ func TestInstanceMemberProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "DELETE FROM projections.instance_members3 WHERE (instance_id = $1) AND (user_id = $2)", + expectedStmt: "DELETE FROM projections.instance_members4 WHERE (instance_id = $1) AND (user_id = $2)", expectedArgs: []interface{}{ "instance-id", "user-id", @@ -190,7 +188,7 @@ func TestInstanceMemberProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "DELETE FROM projections.instance_members3 WHERE (instance_id = $1) AND (user_id = $2)", + expectedStmt: "DELETE FROM projections.instance_members4 WHERE (instance_id = $1) AND (user_id = $2)", expectedArgs: []interface{}{ "instance-id", "agg-id", @@ -217,7 +215,7 @@ func TestInstanceMemberProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "DELETE FROM projections.instance_members3 WHERE (instance_id = $1) AND (user_resource_owner = $2)", + expectedStmt: "DELETE FROM projections.instance_members4 WHERE (instance_id = $1) AND (user_resource_owner = $2)", expectedArgs: []interface{}{ "instance-id", "agg-id", @@ -244,7 +242,7 @@ func TestInstanceMemberProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "DELETE FROM projections.instance_members3 WHERE (instance_id = $1)", + expectedStmt: "DELETE FROM projections.instance_members4 WHERE (instance_id = $1)", expectedArgs: []interface{}{ "agg-id", }, diff --git a/internal/query/projection/login_name.go b/internal/query/projection/login_name.go index d8383af0ae..3eea01afd6 100644 --- a/internal/query/projection/login_name.go +++ b/internal/query/projection/login_name.go @@ -17,19 +17,16 @@ import ( ) const ( - LoginNameTableAlias = "login_names2" + LoginNameTableAlias = "login_names3" LoginNameProjectionTable = "projections." + LoginNameTableAlias LoginNameUserProjectionTable = LoginNameProjectionTable + "_" + loginNameUserSuffix LoginNamePolicyProjectionTable = LoginNameProjectionTable + "_" + loginNamePolicySuffix LoginNameDomainProjectionTable = LoginNameProjectionTable + "_" + loginNameDomainSuffix - LoginNameCol = "login_name" - LoginNameUserCol = "user_id" - LoginNameIsPrimaryCol = "is_primary" - LoginNameInstanceIDCol = "instance_id" - LoginNameOwnerRemovedUserCol = "user_owner_removed" - LoginNameOwnerRemovedPolicyCol = "policy_owner_removed" - LoginNameOwnerRemovedDomainCol = "domain_owner_removed" + LoginNameCol = "login_name" + LoginNameUserCol = "user_id" + LoginNameIsPrimaryCol = "is_primary" + LoginNameInstanceIDCol = "instance_id" usersAlias = "users" policyCustomAlias = "policy_custom" @@ -43,21 +40,18 @@ const ( LoginNameUserUserNameCol = "user_name" LoginNameUserResourceOwnerCol = "resource_owner" LoginNameUserInstanceIDCol = "instance_id" - LoginNameUserOwnerRemovedCol = "owner_removed" loginNameDomainSuffix = "domains" LoginNameDomainNameCol = "name" LoginNameDomainIsPrimaryCol = "is_primary" LoginNameDomainResourceOwnerCol = "resource_owner" LoginNameDomainInstanceIDCol = "instance_id" - LoginNameDomainOwnerRemovedCol = "owner_removed" loginNamePolicySuffix = "policies" LoginNamePoliciesMustBeDomainCol = "must_be_domain" LoginNamePoliciesIsDefaultCol = "is_default" LoginNamePoliciesResourceOwnerCol = "resource_owner" LoginNamePoliciesInstanceIDCol = "instance_id" - LoginNamePoliciesOwnerRemovedCol = "owner_removed" ) var ( @@ -73,10 +67,6 @@ var ( coalesce(col(policyCustomAlias, LoginNamePoliciesMustBeDomainCol), col(policyDefaultAlias, LoginNamePoliciesMustBeDomainCol)), LoginNamePoliciesMustBeDomainCol, ), - alias(col(usersAlias, LoginNameUserOwnerRemovedCol), - LoginNameOwnerRemovedUserCol), - alias(coalesce(col(policyCustomAlias, LoginNamePoliciesOwnerRemovedCol), "false"), - LoginNameOwnerRemovedPolicyCol), ).From(alias(LoginNameUserProjectionTable, usersAlias)). LeftJoin( leftJoin(LoginNamePolicyProjectionTable, policyCustomAlias, @@ -101,10 +91,6 @@ var ( alias(col(domainsAlias, LoginNameDomainNameCol), domainAlias), col(domainsAlias, LoginNameDomainIsPrimaryCol), - col(policyUsersAlias, LoginNameOwnerRemovedUserCol), - col(policyUsersAlias, LoginNameOwnerRemovedPolicyCol), - alias(coalesce(col(domainsAlias, LoginNameDomainOwnerRemovedCol), "false"), - LoginNameOwnerRemovedDomainCol), ).FromSelect(policyUsers, policyUsersAlias). LeftJoin( leftJoin(LoginNameDomainProjectionTable, domainsAlias, @@ -125,9 +111,6 @@ var ( alias(coalesce(LoginNameDomainIsPrimaryCol, "true"), LoginNameIsPrimaryCol), LoginNameInstanceIDCol, - LoginNameOwnerRemovedUserCol, - LoginNameOwnerRemovedPolicyCol, - LoginNameOwnerRemovedDomainCol, ).FromSelect(loginNamesTable, LoginNameTableAlias).MustSql() ) @@ -190,17 +173,14 @@ func (*loginNameProjection) Init() *old_handler.Check { handler.NewColumn(LoginNameUserUserNameCol, handler.ColumnTypeText), handler.NewColumn(LoginNameUserResourceOwnerCol, handler.ColumnTypeText), handler.NewColumn(LoginNameUserInstanceIDCol, handler.ColumnTypeText), - handler.NewColumn(LoginNameUserOwnerRemovedCol, handler.ColumnTypeBool, handler.Default(false)), }, handler.NewPrimaryKey(LoginNameUserInstanceIDCol, LoginNameUserIDCol), loginNameUserSuffix, handler.WithIndex(handler.NewIndex("resource_owner", []string{LoginNameUserResourceOwnerCol})), - handler.WithIndex(handler.NewIndex("owner_removed", []string{LoginNameUserOwnerRemovedCol})), handler.WithIndex( handler.NewIndex("lnu_instance_ro_id", []string{LoginNameUserInstanceIDCol, LoginNameUserResourceOwnerCol, LoginNameUserIDCol}, handler.WithInclude( LoginNameUserUserNameCol, - LoginNameUserOwnerRemovedCol, ), ), ), @@ -211,11 +191,9 @@ func (*loginNameProjection) Init() *old_handler.Check { handler.NewColumn(LoginNameDomainIsPrimaryCol, handler.ColumnTypeBool, handler.Default(false)), handler.NewColumn(LoginNameDomainResourceOwnerCol, handler.ColumnTypeText), handler.NewColumn(LoginNameDomainInstanceIDCol, handler.ColumnTypeText), - handler.NewColumn(LoginNameDomainOwnerRemovedCol, handler.ColumnTypeBool, handler.Default(false)), }, handler.NewPrimaryKey(LoginNameDomainInstanceIDCol, LoginNameDomainResourceOwnerCol, LoginNameDomainNameCol), loginNameDomainSuffix, - handler.WithIndex(handler.NewIndex("owner_removed", []string{LoginNameDomainOwnerRemovedCol})), ), handler.NewSuffixedTable( []*handler.InitColumn{ @@ -223,12 +201,10 @@ func (*loginNameProjection) Init() *old_handler.Check { handler.NewColumn(LoginNamePoliciesIsDefaultCol, handler.ColumnTypeBool), handler.NewColumn(LoginNamePoliciesResourceOwnerCol, handler.ColumnTypeText), handler.NewColumn(LoginNamePoliciesInstanceIDCol, handler.ColumnTypeText), - handler.NewColumn(LoginNamePoliciesOwnerRemovedCol, handler.ColumnTypeBool, handler.Default(false)), }, handler.NewPrimaryKey(LoginNamePoliciesInstanceIDCol, LoginNamePoliciesResourceOwnerCol), loginNamePolicySuffix, handler.WithIndex(handler.NewIndex("is_default", []string{LoginNamePoliciesResourceOwnerCol, LoginNamePoliciesIsDefaultCol})), - handler.WithIndex(handler.NewIndex("owner_removed", []string{LoginNamePoliciesOwnerRemovedCol})), ), ) } diff --git a/internal/query/projection/login_name_test.go b/internal/query/projection/login_name_test.go index 36c38ec76e..019f6fd0a7 100644 --- a/internal/query/projection/login_name_test.go +++ b/internal/query/projection/login_name_test.go @@ -40,7 +40,7 @@ func TestLoginNameProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "INSERT INTO projections.login_names2_users (id, user_name, resource_owner, instance_id) VALUES ($1, $2, $3, $4)", + expectedStmt: "INSERT INTO projections.login_names3_users (id, user_name, resource_owner, instance_id) VALUES ($1, $2, $3, $4)", expectedArgs: []interface{}{ "agg-id", "human-added", @@ -71,7 +71,7 @@ func TestLoginNameProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "INSERT INTO projections.login_names2_users (id, user_name, resource_owner, instance_id) VALUES ($1, $2, $3, $4)", + expectedStmt: "INSERT INTO projections.login_names3_users (id, user_name, resource_owner, instance_id) VALUES ($1, $2, $3, $4)", expectedArgs: []interface{}{ "agg-id", "human-registered", @@ -102,7 +102,7 @@ func TestLoginNameProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "INSERT INTO projections.login_names2_users (id, user_name, resource_owner, instance_id) VALUES ($1, $2, $3, $4)", + expectedStmt: "INSERT INTO projections.login_names3_users (id, user_name, resource_owner, instance_id) VALUES ($1, $2, $3, $4)", expectedArgs: []interface{}{ "agg-id", "machine-added", @@ -131,7 +131,7 @@ func TestLoginNameProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "DELETE FROM projections.login_names2_users WHERE (id = $1) AND (instance_id = $2)", + expectedStmt: "DELETE FROM projections.login_names3_users WHERE (id = $1) AND (instance_id = $2)", expectedArgs: []interface{}{ "agg-id", "instance-id", @@ -160,7 +160,7 @@ func TestLoginNameProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "UPDATE projections.login_names2_users SET user_name = $1 WHERE (id = $2) AND (instance_id = $3)", + expectedStmt: "UPDATE projections.login_names3_users SET user_name = $1 WHERE (id = $2) AND (instance_id = $3)", expectedArgs: []interface{}{ "changed", "agg-id", @@ -190,7 +190,7 @@ func TestLoginNameProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "UPDATE projections.login_names2_users SET user_name = $1 WHERE (id = $2) AND (instance_id = $3)", + expectedStmt: "UPDATE projections.login_names3_users SET user_name = $1 WHERE (id = $2) AND (instance_id = $3)", expectedArgs: []interface{}{ "claimed", "agg-id", @@ -220,7 +220,7 @@ func TestLoginNameProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "INSERT INTO projections.login_names2_policies (must_be_domain, is_default, resource_owner, instance_id) VALUES ($1, $2, $3, $4)", + expectedStmt: "INSERT INTO projections.login_names3_policies (must_be_domain, is_default, resource_owner, instance_id) VALUES ($1, $2, $3, $4)", expectedArgs: []interface{}{ true, false, @@ -251,7 +251,7 @@ func TestLoginNameProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "UPDATE projections.login_names2_policies SET must_be_domain = $1 WHERE (resource_owner = $2) AND (instance_id = $3)", + expectedStmt: "UPDATE projections.login_names3_policies SET must_be_domain = $1 WHERE (resource_owner = $2) AND (instance_id = $3)", expectedArgs: []interface{}{ false, "ro-id", @@ -298,7 +298,7 @@ func TestLoginNameProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "DELETE FROM projections.login_names2_policies WHERE (resource_owner = $1) AND (instance_id = $2)", + expectedStmt: "DELETE FROM projections.login_names3_policies WHERE (resource_owner = $1) AND (instance_id = $2)", expectedArgs: []interface{}{ "ro-id", "instance-id", @@ -327,7 +327,7 @@ func TestLoginNameProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "INSERT INTO projections.login_names2_domains (name, resource_owner, instance_id) VALUES ($1, $2, $3)", + expectedStmt: "INSERT INTO projections.login_names3_domains (name, resource_owner, instance_id) VALUES ($1, $2, $3)", expectedArgs: []interface{}{ "verified", "ro-id", @@ -357,7 +357,7 @@ func TestLoginNameProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "DELETE FROM projections.login_names2_domains WHERE (name = $1) AND (resource_owner = $2) AND (instance_id = $3)", + expectedStmt: "DELETE FROM projections.login_names3_domains WHERE (name = $1) AND (resource_owner = $2) AND (instance_id = $3)", expectedArgs: []interface{}{ "remove", "ro-id", @@ -387,7 +387,7 @@ func TestLoginNameProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "UPDATE projections.login_names2_domains SET is_primary = $1 WHERE (resource_owner = $2) AND (is_primary = $3) AND (instance_id = $4)", + expectedStmt: "UPDATE projections.login_names3_domains SET is_primary = $1 WHERE (resource_owner = $2) AND (is_primary = $3) AND (instance_id = $4)", expectedArgs: []interface{}{ false, "ro-id", @@ -396,7 +396,7 @@ func TestLoginNameProjection_reduces(t *testing.T) { }, }, { - expectedStmt: "UPDATE projections.login_names2_domains SET is_primary = $1 WHERE (name = $2) AND (resource_owner = $3) AND (instance_id = $4)", + expectedStmt: "UPDATE projections.login_names3_domains SET is_primary = $1 WHERE (name = $2) AND (resource_owner = $3) AND (instance_id = $4)", expectedArgs: []interface{}{ true, "primary", @@ -427,7 +427,7 @@ func TestLoginNameProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "INSERT INTO projections.login_names2_policies (must_be_domain, is_default, resource_owner, instance_id) VALUES ($1, $2, $3, $4)", + expectedStmt: "INSERT INTO projections.login_names3_policies (must_be_domain, is_default, resource_owner, instance_id) VALUES ($1, $2, $3, $4)", expectedArgs: []interface{}{ true, true, @@ -458,7 +458,7 @@ func TestLoginNameProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "UPDATE projections.login_names2_policies SET must_be_domain = $1 WHERE (resource_owner = $2) AND (instance_id = $3)", + expectedStmt: "UPDATE projections.login_names3_policies SET must_be_domain = $1 WHERE (resource_owner = $2) AND (instance_id = $3)", expectedArgs: []interface{}{ false, "ro-id", @@ -505,19 +505,19 @@ func TestLoginNameProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "DELETE FROM projections.login_names2_domains WHERE (instance_id = $1)", + expectedStmt: "DELETE FROM projections.login_names3_domains WHERE (instance_id = $1)", expectedArgs: []interface{}{ "agg-id", }, }, { - expectedStmt: "DELETE FROM projections.login_names2_policies WHERE (instance_id = $1)", + expectedStmt: "DELETE FROM projections.login_names3_policies WHERE (instance_id = $1)", expectedArgs: []interface{}{ "agg-id", }, }, { - expectedStmt: "DELETE FROM projections.login_names2_users WHERE (instance_id = $1)", + expectedStmt: "DELETE FROM projections.login_names3_users WHERE (instance_id = $1)", expectedArgs: []interface{}{ "agg-id", }, @@ -543,21 +543,21 @@ func TestLoginNameProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "DELETE FROM projections.login_names2_domains WHERE (instance_id = $1) AND (resource_owner = $2)", + expectedStmt: "DELETE FROM projections.login_names3_domains WHERE (instance_id = $1) AND (resource_owner = $2)", expectedArgs: []interface{}{ "instance-id", "agg-id", }, }, { - expectedStmt: "DELETE FROM projections.login_names2_policies WHERE (instance_id = $1) AND (resource_owner = $2)", + expectedStmt: "DELETE FROM projections.login_names3_policies WHERE (instance_id = $1) AND (resource_owner = $2)", expectedArgs: []interface{}{ "instance-id", "agg-id", }, }, { - expectedStmt: "DELETE FROM projections.login_names2_users WHERE (instance_id = $1) AND (resource_owner = $2)", + expectedStmt: "DELETE FROM projections.login_names3_users WHERE (instance_id = $1) AND (resource_owner = $2)", expectedArgs: []interface{}{ "instance-id", "agg-id", diff --git a/internal/query/projection/member.go b/internal/query/projection/member.go index 364f6b1e06..545643af74 100644 --- a/internal/query/projection/member.go +++ b/internal/query/projection/member.go @@ -14,14 +14,12 @@ const ( MemberUserIDCol = "user_id" MemberRolesCol = "roles" MemberUserResourceOwner = "user_resource_owner" - MemberUserOwnerRemoved = "user_owner_removed" MemberCreationDate = "creation_date" MemberChangeDate = "change_date" MemberSequence = "sequence" MemberResourceOwner = "resource_owner" MemberInstanceID = "instance_id" - MemberOwnerRemoved = "owner_removed" ) var ( @@ -30,12 +28,10 @@ var ( handler.NewColumn(MemberChangeDate, handler.ColumnTypeTimestamp), handler.NewColumn(MemberUserIDCol, handler.ColumnTypeText), handler.NewColumn(MemberUserResourceOwner, handler.ColumnTypeText), - handler.NewColumn(MemberUserOwnerRemoved, handler.ColumnTypeBool, handler.Default(false)), handler.NewColumn(MemberRolesCol, handler.ColumnTypeTextArray, handler.Nullable()), handler.NewColumn(MemberSequence, handler.ColumnTypeInt64), handler.NewColumn(MemberResourceOwner, handler.ColumnTypeText), handler.NewColumn(MemberInstanceID, handler.ColumnTypeText), - handler.NewColumn(MemberOwnerRemoved, handler.ColumnTypeBool, handler.Default(false)), } ) @@ -65,14 +61,12 @@ func reduceMemberAdded(e member.MemberAddedEvent, userResourceOwner string, opts cols: []handler.Column{ handler.NewCol(MemberUserIDCol, e.UserID), handler.NewCol(MemberUserResourceOwner, userResourceOwner), - handler.NewCol(MemberUserOwnerRemoved, false), handler.NewCol(MemberRolesCol, database.TextArray[string](e.Roles)), handler.NewCol(MemberCreationDate, e.CreatedAt()), handler.NewCol(MemberChangeDate, e.CreatedAt()), handler.NewCol(MemberSequence, e.Sequence()), handler.NewCol(MemberResourceOwner, e.Aggregate().ResourceOwner), handler.NewCol(MemberInstanceID, e.Aggregate().InstanceID), - handler.NewCol(MemberOwnerRemoved, false), }} for _, opt := range opts { @@ -158,14 +152,6 @@ func memberUserOwnerRemovedConds(e eventstore.Event, opts ...reduceMemberOpt) [] return config.conds } -func memberUserOwnerRemovedCols(e eventstore.Event) []handler.Column { - return []handler.Column{ - handler.NewCol(MemberChangeDate, e.CreatedAt()), - handler.NewCol(MemberSequence, e.Sequence()), - handler.NewCol(MemberUserOwnerRemoved, true), - } -} - func reduceMemberUserOwnerRemoved(e eventstore.Event, opts ...reduceMemberOpt) (*handler.Statement, error) { return handler.NewDeleteStatement( e, diff --git a/internal/query/projection/org_member.go b/internal/query/projection/org_member.go index fd8ffc07e0..801b682486 100644 --- a/internal/query/projection/org_member.go +++ b/internal/query/projection/org_member.go @@ -13,7 +13,7 @@ import ( ) const ( - OrgMemberProjectionTable = "projections.org_members3" + OrgMemberProjectionTable = "projections.org_members4" OrgMemberOrgIDCol = "org_id" ) @@ -35,18 +35,14 @@ func (*orgMemberProjection) Init() *old_handler.Check { append(memberColumns, handler.NewColumn(OrgMemberOrgIDCol, handler.ColumnTypeText)), handler.NewPrimaryKey(MemberInstanceID, OrgMemberOrgIDCol, MemberUserIDCol), handler.WithIndex(handler.NewIndex("user_id", []string{MemberUserIDCol})), - handler.WithIndex(handler.NewIndex("owner_removed", []string{MemberOwnerRemoved})), - handler.WithIndex(handler.NewIndex("user_owner_removed", []string{MemberUserOwnerRemoved})), handler.WithIndex( handler.NewIndex("om_instance", []string{MemberInstanceID}, handler.WithInclude( MemberCreationDate, MemberChangeDate, - MemberUserOwnerRemoved, MemberRolesCol, MemberSequence, MemberResourceOwner, - MemberOwnerRemoved, ), ), ), diff --git a/internal/query/projection/org_member_test.go b/internal/query/projection/org_member_test.go index dee53b5dbb..5737c30e8b 100644 --- a/internal/query/projection/org_member_test.go +++ b/internal/query/projection/org_member_test.go @@ -61,18 +61,16 @@ func TestOrgMemberProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "INSERT INTO projections.org_members3 (user_id, user_resource_owner, user_owner_removed, roles, creation_date, change_date, sequence, resource_owner, instance_id, owner_removed, org_id) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11)", + expectedStmt: "INSERT INTO projections.org_members4 (user_id, user_resource_owner, roles, creation_date, change_date, sequence, resource_owner, instance_id, org_id) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9)", expectedArgs: []interface{}{ "user-id", "org1", - false, database.TextArray[string]{"role"}, anyArg{}, anyArg{}, uint64(15), "ro-id", "instance-id", - false, "agg-id", }, }, @@ -100,7 +98,7 @@ func TestOrgMemberProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "UPDATE projections.org_members3 SET (roles, change_date, sequence) = ($1, $2, $3) WHERE (instance_id = $4) AND (user_id = $5) AND (org_id = $6)", + expectedStmt: "UPDATE projections.org_members4 SET (roles, change_date, sequence) = ($1, $2, $3) WHERE (instance_id = $4) AND (user_id = $5) AND (org_id = $6)", expectedArgs: []interface{}{ database.TextArray[string]{"role", "changed"}, anyArg{}, @@ -133,7 +131,7 @@ func TestOrgMemberProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "DELETE FROM projections.org_members3 WHERE (instance_id = $1) AND (user_id = $2) AND (org_id = $3)", + expectedStmt: "DELETE FROM projections.org_members4 WHERE (instance_id = $1) AND (user_id = $2) AND (org_id = $3)", expectedArgs: []interface{}{ "instance-id", "user-id", @@ -163,7 +161,7 @@ func TestOrgMemberProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "DELETE FROM projections.org_members3 WHERE (instance_id = $1) AND (user_id = $2) AND (org_id = $3)", + expectedStmt: "DELETE FROM projections.org_members4 WHERE (instance_id = $1) AND (user_id = $2) AND (org_id = $3)", expectedArgs: []interface{}{ "instance-id", "user-id", @@ -191,7 +189,7 @@ func TestOrgMemberProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "DELETE FROM projections.org_members3 WHERE (instance_id = $1) AND (user_id = $2)", + expectedStmt: "DELETE FROM projections.org_members4 WHERE (instance_id = $1) AND (user_id = $2)", expectedArgs: []interface{}{ "instance-id", "agg-id", @@ -218,14 +216,14 @@ func TestOrgMemberProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "DELETE FROM projections.org_members3 WHERE (instance_id = $1) AND (resource_owner = $2)", + expectedStmt: "DELETE FROM projections.org_members4 WHERE (instance_id = $1) AND (resource_owner = $2)", expectedArgs: []interface{}{ "instance-id", "agg-id", }, }, { - expectedStmt: "DELETE FROM projections.org_members3 WHERE (instance_id = $1) AND (user_resource_owner = $2)", + expectedStmt: "DELETE FROM projections.org_members4 WHERE (instance_id = $1) AND (user_resource_owner = $2)", expectedArgs: []interface{}{ "instance-id", "agg-id", @@ -252,7 +250,7 @@ func TestOrgMemberProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "DELETE FROM projections.org_members3 WHERE (instance_id = $1)", + expectedStmt: "DELETE FROM projections.org_members4 WHERE (instance_id = $1)", expectedArgs: []interface{}{ "agg-id", }, diff --git a/internal/query/projection/project.go b/internal/query/projection/project.go index c02e16f6d7..95f62cdc7c 100644 --- a/internal/query/projection/project.go +++ b/internal/query/projection/project.go @@ -14,7 +14,7 @@ import ( ) const ( - ProjectProjectionTable = "projections.projects3" + ProjectProjectionTable = "projections.projects4" ProjectColumnID = "id" ProjectColumnCreationDate = "creation_date" @@ -28,7 +28,6 @@ const ( ProjectColumnProjectRoleCheck = "project_role_check" ProjectColumnHasProjectCheck = "has_project_check" ProjectColumnPrivateLabelingSetting = "private_labeling_setting" - ProjectColumnOwnerRemoved = "owner_removed" ) type projectProjection struct{} @@ -56,11 +55,9 @@ func (*projectProjection) Init() *old_handler.Check { handler.NewColumn(ProjectColumnProjectRoleCheck, handler.ColumnTypeBool), handler.NewColumn(ProjectColumnHasProjectCheck, handler.ColumnTypeBool), handler.NewColumn(ProjectColumnPrivateLabelingSetting, handler.ColumnTypeEnum), - handler.NewColumn(ProjectColumnOwnerRemoved, handler.ColumnTypeBool, handler.Default(false)), }, handler.NewPrimaryKey(ProjectColumnInstanceID, ProjectColumnID), handler.WithIndex(handler.NewIndex("resource_owner", []string{ProjectColumnResourceOwner})), - handler.WithIndex(handler.NewIndex("owner_removed", []string{ProjectColumnOwnerRemoved})), ), ) } diff --git a/internal/query/projection/project_grant.go b/internal/query/projection/project_grant.go index 7dbe17cd67..7923299e34 100644 --- a/internal/query/projection/project_grant.go +++ b/internal/query/projection/project_grant.go @@ -15,20 +15,18 @@ import ( ) const ( - ProjectGrantProjectionTable = "projections.project_grants3" + ProjectGrantProjectionTable = "projections.project_grants4" - ProjectGrantColumnGrantID = "grant_id" - ProjectGrantColumnCreationDate = "creation_date" - ProjectGrantColumnChangeDate = "change_date" - ProjectGrantColumnSequence = "sequence" - ProjectGrantColumnState = "state" - ProjectGrantColumnResourceOwner = "resource_owner" - ProjectGrantColumnInstanceID = "instance_id" - ProjectGrantColumnProjectID = "project_id" - ProjectGrantColumnGrantedOrgID = "granted_org_id" - ProjectGrantColumnRoleKeys = "granted_role_keys" - ProjectGrantColumnOwnerRemoved = "owner_removed" - ProjectGrantColumnGrantedOrgRemoved = "granted_org_removed" + ProjectGrantColumnGrantID = "grant_id" + ProjectGrantColumnCreationDate = "creation_date" + ProjectGrantColumnChangeDate = "change_date" + ProjectGrantColumnSequence = "sequence" + ProjectGrantColumnState = "state" + ProjectGrantColumnResourceOwner = "resource_owner" + ProjectGrantColumnInstanceID = "instance_id" + ProjectGrantColumnProjectID = "project_id" + ProjectGrantColumnGrantedOrgID = "granted_org_id" + ProjectGrantColumnRoleKeys = "granted_role_keys" ) type projectGrantProjection struct{} @@ -54,14 +52,10 @@ func (*projectGrantProjection) Init() *old_handler.Check { handler.NewColumn(ProjectGrantColumnProjectID, handler.ColumnTypeText), handler.NewColumn(ProjectGrantColumnGrantedOrgID, handler.ColumnTypeText), handler.NewColumn(ProjectGrantColumnRoleKeys, handler.ColumnTypeTextArray, handler.Nullable()), - handler.NewColumn(ProjectGrantColumnOwnerRemoved, handler.ColumnTypeBool, handler.Default(false)), - handler.NewColumn(ProjectGrantColumnGrantedOrgRemoved, handler.ColumnTypeBool, handler.Default(false)), }, handler.NewPrimaryKey(ProjectGrantColumnInstanceID, ProjectGrantColumnGrantID), handler.WithIndex(handler.NewIndex("resource_owner", []string{ProjectGrantColumnResourceOwner})), handler.WithIndex(handler.NewIndex("granted_org", []string{ProjectGrantColumnGrantedOrgID})), - handler.WithIndex(handler.NewIndex("owner_removed", []string{ProjectGrantColumnOwnerRemoved})), - handler.WithIndex(handler.NewIndex("granted_org_removed", []string{ProjectGrantColumnGrantedOrgRemoved})), ), ) } diff --git a/internal/query/projection/project_grant_member.go b/internal/query/projection/project_grant_member.go index 934ed50767..cf357ba919 100644 --- a/internal/query/projection/project_grant_member.go +++ b/internal/query/projection/project_grant_member.go @@ -15,11 +15,10 @@ import ( ) const ( - ProjectGrantMemberProjectionTable = "projections.project_grant_members3" - ProjectGrantMemberProjectIDCol = "project_id" - ProjectGrantMemberGrantIDCol = "grant_id" - ProjectGrantMemberGrantedOrg = "granted_org" - ProjectGrantMemberGrantedOrgRemoved = "granted_org_removed" + ProjectGrantMemberProjectionTable = "projections.project_grant_members4" + ProjectGrantMemberProjectIDCol = "project_id" + ProjectGrantMemberGrantIDCol = "grant_id" + ProjectGrantMemberGrantedOrg = "granted_org" ) type projectGrantMemberProjection struct { @@ -41,24 +40,17 @@ func (*projectGrantMemberProjection) Init() *old_handler.Check { handler.NewColumn(ProjectGrantMemberProjectIDCol, handler.ColumnTypeText), handler.NewColumn(ProjectGrantMemberGrantIDCol, handler.ColumnTypeText), handler.NewColumn(ProjectGrantMemberGrantedOrg, handler.ColumnTypeText), - handler.NewColumn(ProjectGrantMemberGrantedOrgRemoved, handler.ColumnTypeBool, handler.Default(false)), ), handler.NewPrimaryKey(MemberInstanceID, ProjectGrantMemberProjectIDCol, ProjectGrantMemberGrantIDCol, MemberUserIDCol), handler.WithIndex(handler.NewIndex("user_id", []string{MemberUserIDCol})), - handler.WithIndex(handler.NewIndex("owner_removed", []string{MemberOwnerRemoved})), - handler.WithIndex(handler.NewIndex("user_owner_removed", []string{MemberUserOwnerRemoved})), - handler.WithIndex(handler.NewIndex("granted_org_removed", []string{ProjectGrantMemberGrantedOrgRemoved})), handler.WithIndex( handler.NewIndex("pgm_instance", []string{MemberInstanceID}, handler.WithInclude( MemberCreationDate, MemberChangeDate, - MemberUserOwnerRemoved, MemberRolesCol, MemberSequence, MemberResourceOwner, - MemberOwnerRemoved, - ProjectGrantMemberGrantedOrgRemoved, ), ), ), @@ -147,7 +139,6 @@ func (p *projectGrantMemberProjection) reduceAdded(event eventstore.Event) (*han withMemberCol(ProjectGrantMemberProjectIDCol, e.Aggregate().ID), withMemberCol(ProjectGrantMemberGrantIDCol, e.GrantID), withMemberCol(ProjectGrantMemberGrantedOrg, grantedOrg), - withMemberCol(ProjectGrantMemberGrantedOrgRemoved, false), ) } diff --git a/internal/query/projection/project_grant_member_test.go b/internal/query/projection/project_grant_member_test.go index 0f9ae22605..b9425d789f 100644 --- a/internal/query/projection/project_grant_member_test.go +++ b/internal/query/projection/project_grant_member_test.go @@ -72,22 +72,19 @@ func TestProjectGrantMemberProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "INSERT INTO projections.project_grant_members3 (user_id, user_resource_owner, user_owner_removed, roles, creation_date, change_date, sequence, resource_owner, instance_id, owner_removed, project_id, grant_id, granted_org, granted_org_removed) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14)", + expectedStmt: "INSERT INTO projections.project_grant_members4 (user_id, user_resource_owner, roles, creation_date, change_date, sequence, resource_owner, instance_id, project_id, grant_id, granted_org) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11)", expectedArgs: []interface{}{ "user-id", "org1", - false, database.TextArray[string]{"role"}, anyArg{}, anyArg{}, uint64(15), "ro-id", "instance-id", - false, "agg-id", "grant-id", "org3", - false, }, }, }, @@ -115,7 +112,7 @@ func TestProjectGrantMemberProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "UPDATE projections.project_grant_members3 SET (roles, change_date, sequence) = ($1, $2, $3) WHERE (instance_id = $4) AND (user_id = $5) AND (project_id = $6) AND (grant_id = $7)", + expectedStmt: "UPDATE projections.project_grant_members4 SET (roles, change_date, sequence) = ($1, $2, $3) WHERE (instance_id = $4) AND (user_id = $5) AND (project_id = $6) AND (grant_id = $7)", expectedArgs: []interface{}{ database.TextArray[string]{"role", "changed"}, anyArg{}, @@ -150,7 +147,7 @@ func TestProjectGrantMemberProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "DELETE FROM projections.project_grant_members3 WHERE (instance_id = $1) AND (user_id = $2) AND (project_id = $3) AND (grant_id = $4)", + expectedStmt: "DELETE FROM projections.project_grant_members4 WHERE (instance_id = $1) AND (user_id = $2) AND (project_id = $3) AND (grant_id = $4)", expectedArgs: []interface{}{ "instance-id", "user-id", @@ -182,7 +179,7 @@ func TestProjectGrantMemberProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "DELETE FROM projections.project_grant_members3 WHERE (instance_id = $1) AND (user_id = $2) AND (project_id = $3) AND (grant_id = $4)", + expectedStmt: "DELETE FROM projections.project_grant_members4 WHERE (instance_id = $1) AND (user_id = $2) AND (project_id = $3) AND (grant_id = $4)", expectedArgs: []interface{}{ "instance-id", "user-id", @@ -211,7 +208,7 @@ func TestProjectGrantMemberProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "DELETE FROM projections.project_grant_members3 WHERE (instance_id = $1) AND (user_id = $2)", + expectedStmt: "DELETE FROM projections.project_grant_members4 WHERE (instance_id = $1) AND (user_id = $2)", expectedArgs: []interface{}{ "instance-id", "agg-id", @@ -238,7 +235,7 @@ func TestProjectGrantMemberProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "DELETE FROM projections.project_grant_members3 WHERE (instance_id = $1) AND (project_id = $2)", + expectedStmt: "DELETE FROM projections.project_grant_members4 WHERE (instance_id = $1) AND (project_id = $2)", expectedArgs: []interface{}{ "instance-id", "agg-id", @@ -264,7 +261,7 @@ func TestProjectGrantMemberProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "DELETE FROM projections.project_grant_members3 WHERE (instance_id = $1)", + expectedStmt: "DELETE FROM projections.project_grant_members4 WHERE (instance_id = $1)", expectedArgs: []interface{}{ "agg-id", }, @@ -290,7 +287,7 @@ func TestProjectGrantMemberProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "DELETE FROM projections.project_grant_members3 WHERE (instance_id = $1) AND (grant_id = $2) AND (project_id = $3)", + expectedStmt: "DELETE FROM projections.project_grant_members4 WHERE (instance_id = $1) AND (grant_id = $2) AND (project_id = $3)", expectedArgs: []interface{}{ "instance-id", "grant-id", @@ -318,21 +315,21 @@ func TestProjectGrantMemberProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "DELETE FROM projections.project_grant_members3 WHERE (instance_id = $1) AND (resource_owner = $2)", + expectedStmt: "DELETE FROM projections.project_grant_members4 WHERE (instance_id = $1) AND (resource_owner = $2)", expectedArgs: []interface{}{ "instance-id", "agg-id", }, }, { - expectedStmt: "DELETE FROM projections.project_grant_members3 WHERE (instance_id = $1) AND (user_resource_owner = $2)", + expectedStmt: "DELETE FROM projections.project_grant_members4 WHERE (instance_id = $1) AND (user_resource_owner = $2)", expectedArgs: []interface{}{ "instance-id", "agg-id", }, }, { - expectedStmt: "DELETE FROM projections.project_grant_members3 WHERE (instance_id = $1) AND (granted_org = $2)", + expectedStmt: "DELETE FROM projections.project_grant_members4 WHERE (instance_id = $1) AND (granted_org = $2)", expectedArgs: []interface{}{ "instance-id", "agg-id", diff --git a/internal/query/projection/project_grant_test.go b/internal/query/projection/project_grant_test.go index 485e4aaa0d..af8692db91 100644 --- a/internal/query/projection/project_grant_test.go +++ b/internal/query/projection/project_grant_test.go @@ -40,7 +40,7 @@ func TestProjectGrantProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "DELETE FROM projections.project_grants3 WHERE (project_id = $1) AND (instance_id = $2)", + expectedStmt: "DELETE FROM projections.project_grants4 WHERE (project_id = $1) AND (instance_id = $2)", expectedArgs: []interface{}{ "agg-id", "instance-id", @@ -67,7 +67,7 @@ func TestProjectGrantProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "DELETE FROM projections.project_grants3 WHERE (instance_id = $1)", + expectedStmt: "DELETE FROM projections.project_grants4 WHERE (instance_id = $1)", expectedArgs: []interface{}{ "agg-id", }, @@ -93,7 +93,7 @@ func TestProjectGrantProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "DELETE FROM projections.project_grants3 WHERE (grant_id = $1) AND (project_id = $2) AND (instance_id = $3)", + expectedStmt: "DELETE FROM projections.project_grants4 WHERE (grant_id = $1) AND (project_id = $2) AND (instance_id = $3)", expectedArgs: []interface{}{ "grant-id", "agg-id", @@ -121,7 +121,7 @@ func TestProjectGrantProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "UPDATE projections.project_grants3 SET (change_date, sequence, state) = ($1, $2, $3) WHERE (grant_id = $4) AND (project_id = $5) AND (instance_id = $6)", + expectedStmt: "UPDATE projections.project_grants4 SET (change_date, sequence, state) = ($1, $2, $3) WHERE (grant_id = $4) AND (project_id = $5) AND (instance_id = $6)", expectedArgs: []interface{}{ anyArg{}, uint64(15), @@ -152,7 +152,7 @@ func TestProjectGrantProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "UPDATE projections.project_grants3 SET (change_date, sequence, state) = ($1, $2, $3) WHERE (grant_id = $4) AND (project_id = $5) AND (instance_id = $6)", + expectedStmt: "UPDATE projections.project_grants4 SET (change_date, sequence, state) = ($1, $2, $3) WHERE (grant_id = $4) AND (project_id = $5) AND (instance_id = $6)", expectedArgs: []interface{}{ anyArg{}, uint64(15), @@ -183,7 +183,7 @@ func TestProjectGrantProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "UPDATE projections.project_grants3 SET (change_date, sequence, granted_role_keys) = ($1, $2, $3) WHERE (grant_id = $4) AND (project_id = $5) AND (instance_id = $6)", + expectedStmt: "UPDATE projections.project_grants4 SET (change_date, sequence, granted_role_keys) = ($1, $2, $3) WHERE (grant_id = $4) AND (project_id = $5) AND (instance_id = $6)", expectedArgs: []interface{}{ anyArg{}, uint64(15), @@ -214,7 +214,7 @@ func TestProjectGrantProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "UPDATE projections.project_grants3 SET (change_date, sequence, granted_role_keys) = ($1, $2, $3) WHERE (grant_id = $4) AND (project_id = $5) AND (instance_id = $6)", + expectedStmt: "UPDATE projections.project_grants4 SET (change_date, sequence, granted_role_keys) = ($1, $2, $3) WHERE (grant_id = $4) AND (project_id = $5) AND (instance_id = $6)", expectedArgs: []interface{}{ anyArg{}, uint64(15), @@ -245,7 +245,7 @@ func TestProjectGrantProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "INSERT INTO projections.project_grants3 (grant_id, project_id, creation_date, change_date, resource_owner, instance_id, state, sequence, granted_org_id, granted_role_keys) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10)", + expectedStmt: "INSERT INTO projections.project_grants4 (grant_id, project_id, creation_date, change_date, resource_owner, instance_id, state, sequence, granted_org_id, granted_role_keys) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10)", expectedArgs: []interface{}{ "grant-id", "agg-id", @@ -280,14 +280,14 @@ func TestProjectGrantProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "DELETE FROM projections.project_grants3 WHERE (instance_id = $1) AND (resource_owner = $2)", + expectedStmt: "DELETE FROM projections.project_grants4 WHERE (instance_id = $1) AND (resource_owner = $2)", expectedArgs: []interface{}{ "instance-id", "agg-id", }, }, { - expectedStmt: "DELETE FROM projections.project_grants3 WHERE (instance_id = $1) AND (granted_org_id = $2)", + expectedStmt: "DELETE FROM projections.project_grants4 WHERE (instance_id = $1) AND (granted_org_id = $2)", expectedArgs: []interface{}{ "instance-id", "agg-id", diff --git a/internal/query/projection/project_member.go b/internal/query/projection/project_member.go index e6ad90f736..1a56605740 100644 --- a/internal/query/projection/project_member.go +++ b/internal/query/projection/project_member.go @@ -15,7 +15,7 @@ import ( ) const ( - ProjectMemberProjectionTable = "projections.project_members3" + ProjectMemberProjectionTable = "projections.project_members4" ProjectMemberProjectIDCol = "project_id" ) @@ -39,18 +39,14 @@ func (*projectMemberProjection) Init() *old_handler.Check { ), handler.NewPrimaryKey(MemberInstanceID, ProjectMemberProjectIDCol, MemberUserIDCol), handler.WithIndex(handler.NewIndex("user_id", []string{MemberUserIDCol})), - handler.WithIndex(handler.NewIndex("owner_removed", []string{MemberOwnerRemoved})), - handler.WithIndex(handler.NewIndex("user_owner_removed", []string{MemberUserOwnerRemoved})), handler.WithIndex( handler.NewIndex("pm_instance", []string{MemberInstanceID}, handler.WithInclude( MemberCreationDate, MemberChangeDate, - MemberUserOwnerRemoved, MemberRolesCol, MemberSequence, MemberResourceOwner, - MemberOwnerRemoved, ), ), ), diff --git a/internal/query/projection/project_member_test.go b/internal/query/projection/project_member_test.go index 27925c51eb..49a910c1bb 100644 --- a/internal/query/projection/project_member_test.go +++ b/internal/query/projection/project_member_test.go @@ -64,18 +64,16 @@ func TestProjectMemberProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "INSERT INTO projections.project_members3 (user_id, user_resource_owner, user_owner_removed, roles, creation_date, change_date, sequence, resource_owner, instance_id, owner_removed, project_id) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11)", + expectedStmt: "INSERT INTO projections.project_members4 (user_id, user_resource_owner, roles, creation_date, change_date, sequence, resource_owner, instance_id, project_id) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9)", expectedArgs: []interface{}{ "user-id", "org1", - false, database.TextArray[string]{"role"}, anyArg{}, anyArg{}, uint64(15), "ro-id", "instance-id", - false, "agg-id", }, }, @@ -103,7 +101,7 @@ func TestProjectMemberProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "UPDATE projections.project_members3 SET (roles, change_date, sequence) = ($1, $2, $3) WHERE (instance_id = $4) AND (user_id = $5) AND (project_id = $6)", + expectedStmt: "UPDATE projections.project_members4 SET (roles, change_date, sequence) = ($1, $2, $3) WHERE (instance_id = $4) AND (user_id = $5) AND (project_id = $6)", expectedArgs: []interface{}{ database.TextArray[string]{"role", "changed"}, anyArg{}, @@ -136,7 +134,7 @@ func TestProjectMemberProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "DELETE FROM projections.project_members3 WHERE (instance_id = $1) AND (user_id = $2) AND (project_id = $3)", + expectedStmt: "DELETE FROM projections.project_members4 WHERE (instance_id = $1) AND (user_id = $2) AND (project_id = $3)", expectedArgs: []interface{}{ "instance-id", "user-id", @@ -166,7 +164,7 @@ func TestProjectMemberProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "DELETE FROM projections.project_members3 WHERE (instance_id = $1) AND (user_id = $2) AND (project_id = $3)", + expectedStmt: "DELETE FROM projections.project_members4 WHERE (instance_id = $1) AND (user_id = $2) AND (project_id = $3)", expectedArgs: []interface{}{ "instance-id", "user-id", @@ -194,7 +192,7 @@ func TestProjectMemberProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "DELETE FROM projections.project_members3 WHERE (instance_id = $1) AND (user_id = $2)", + expectedStmt: "DELETE FROM projections.project_members4 WHERE (instance_id = $1) AND (user_id = $2)", expectedArgs: []interface{}{ "instance-id", "agg-id", @@ -221,7 +219,7 @@ func TestProjectMemberProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "DELETE FROM projections.project_members3 WHERE (instance_id = $1) AND (project_id = $2)", + expectedStmt: "DELETE FROM projections.project_members4 WHERE (instance_id = $1) AND (project_id = $2)", expectedArgs: []interface{}{ "instance-id", "agg-id", @@ -248,7 +246,7 @@ func TestProjectMemberProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "DELETE FROM projections.project_members3 WHERE (instance_id = $1)", + expectedStmt: "DELETE FROM projections.project_members4 WHERE (instance_id = $1)", expectedArgs: []interface{}{ "agg-id", }, @@ -274,14 +272,14 @@ func TestProjectMemberProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "DELETE FROM projections.project_members3 WHERE (instance_id = $1) AND (resource_owner = $2)", + expectedStmt: "DELETE FROM projections.project_members4 WHERE (instance_id = $1) AND (resource_owner = $2)", expectedArgs: []interface{}{ "instance-id", "agg-id", }, }, { - expectedStmt: "DELETE FROM projections.project_members3 WHERE (instance_id = $1) AND (user_resource_owner = $2)", + expectedStmt: "DELETE FROM projections.project_members4 WHERE (instance_id = $1) AND (user_resource_owner = $2)", expectedArgs: []interface{}{ "instance-id", "agg-id", diff --git a/internal/query/projection/project_role.go b/internal/query/projection/project_role.go index b4fcd21f67..f1d4d45413 100644 --- a/internal/query/projection/project_role.go +++ b/internal/query/projection/project_role.go @@ -13,7 +13,7 @@ import ( ) const ( - ProjectRoleProjectionTable = "projections.project_roles3" + ProjectRoleProjectionTable = "projections.project_roles4" ProjectRoleColumnProjectID = "project_id" ProjectRoleColumnKey = "role_key" @@ -24,7 +24,6 @@ const ( ProjectRoleColumnInstanceID = "instance_id" ProjectRoleColumnDisplayName = "display_name" ProjectRoleColumnGroupName = "group_name" - ProjectRoleColumnOwnerRemoved = "owner_removed" ) type projectRoleProjection struct{} @@ -45,10 +44,8 @@ func (*projectRoleProjection) Init() *old_handler.Check { handler.NewColumn(ProjectRoleColumnInstanceID, handler.ColumnTypeText), handler.NewColumn(ProjectRoleColumnDisplayName, handler.ColumnTypeText), handler.NewColumn(ProjectRoleColumnGroupName, handler.ColumnTypeText), - handler.NewColumn(ProjectRoleColumnOwnerRemoved, handler.ColumnTypeBool, handler.Default(false)), }, handler.NewPrimaryKey(ProjectRoleColumnInstanceID, ProjectRoleColumnProjectID, ProjectRoleColumnKey), - handler.WithIndex(handler.NewIndex("owner_removed", []string{ProjectRoleColumnOwnerRemoved})), ), ) } diff --git a/internal/query/projection/project_role_test.go b/internal/query/projection/project_role_test.go index 684ffa967f..ee4ace10b5 100644 --- a/internal/query/projection/project_role_test.go +++ b/internal/query/projection/project_role_test.go @@ -38,7 +38,7 @@ func TestProjectRoleProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "DELETE FROM projections.project_roles3 WHERE (project_id = $1) AND (instance_id = $2)", + expectedStmt: "DELETE FROM projections.project_roles4 WHERE (project_id = $1) AND (instance_id = $2)", expectedArgs: []interface{}{ "agg-id", "instance-id", @@ -65,7 +65,7 @@ func TestProjectRoleProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "DELETE FROM projections.project_roles3 WHERE (instance_id = $1)", + expectedStmt: "DELETE FROM projections.project_roles4 WHERE (instance_id = $1)", expectedArgs: []interface{}{ "agg-id", }, @@ -91,7 +91,7 @@ func TestProjectRoleProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "DELETE FROM projections.project_roles3 WHERE (role_key = $1) AND (project_id = $2) AND (instance_id = $3)", + expectedStmt: "DELETE FROM projections.project_roles4 WHERE (role_key = $1) AND (project_id = $2) AND (instance_id = $3)", expectedArgs: []interface{}{ "key", "agg-id", @@ -119,7 +119,7 @@ func TestProjectRoleProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "UPDATE projections.project_roles3 SET (change_date, sequence, display_name, group_name) = ($1, $2, $3, $4) WHERE (role_key = $5) AND (project_id = $6) AND (instance_id = $7)", + expectedStmt: "UPDATE projections.project_roles4 SET (change_date, sequence, display_name, group_name) = ($1, $2, $3, $4) WHERE (role_key = $5) AND (project_id = $6) AND (instance_id = $7)", expectedArgs: []interface{}{ anyArg{}, uint64(15), @@ -168,7 +168,7 @@ func TestProjectRoleProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "INSERT INTO projections.project_roles3 (role_key, project_id, creation_date, change_date, resource_owner, instance_id, sequence, display_name, group_name) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9)", + expectedStmt: "INSERT INTO projections.project_roles4 (role_key, project_id, creation_date, change_date, resource_owner, instance_id, sequence, display_name, group_name) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9)", expectedArgs: []interface{}{ "key", "agg-id", @@ -202,7 +202,7 @@ func TestProjectRoleProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "DELETE FROM projections.project_roles3 WHERE (instance_id = $1) AND (resource_owner = $2)", + expectedStmt: "DELETE FROM projections.project_roles4 WHERE (instance_id = $1) AND (resource_owner = $2)", expectedArgs: []interface{}{ "instance-id", "agg-id", diff --git a/internal/query/projection/project_test.go b/internal/query/projection/project_test.go index 4b5756b0e8..af7e85c6ec 100644 --- a/internal/query/projection/project_test.go +++ b/internal/query/projection/project_test.go @@ -39,7 +39,7 @@ func TestProjectProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "DELETE FROM projections.projects3 WHERE (id = $1) AND (instance_id = $2)", + expectedStmt: "DELETE FROM projections.projects4 WHERE (id = $1) AND (instance_id = $2)", expectedArgs: []interface{}{ "agg-id", "instance-id", @@ -66,7 +66,7 @@ func TestProjectProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "DELETE FROM projections.projects3 WHERE (instance_id = $1)", + expectedStmt: "DELETE FROM projections.projects4 WHERE (instance_id = $1)", expectedArgs: []interface{}{ "agg-id", }, @@ -92,7 +92,7 @@ func TestProjectProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "UPDATE projections.projects3 SET (change_date, sequence, state) = ($1, $2, $3) WHERE (id = $4) AND (instance_id = $5)", + expectedStmt: "UPDATE projections.projects4 SET (change_date, sequence, state) = ($1, $2, $3) WHERE (id = $4) AND (instance_id = $5)", expectedArgs: []interface{}{ anyArg{}, uint64(15), @@ -122,7 +122,7 @@ func TestProjectProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "UPDATE projections.projects3 SET (change_date, sequence, state) = ($1, $2, $3) WHERE (id = $4) AND (instance_id = $5)", + expectedStmt: "UPDATE projections.projects4 SET (change_date, sequence, state) = ($1, $2, $3) WHERE (id = $4) AND (instance_id = $5)", expectedArgs: []interface{}{ anyArg{}, uint64(15), @@ -152,7 +152,7 @@ func TestProjectProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "UPDATE projections.projects3 SET (change_date, sequence, name, project_role_assertion, project_role_check, has_project_check, private_labeling_setting) = ($1, $2, $3, $4, $5, $6, $7) WHERE (id = $8) AND (instance_id = $9)", + expectedStmt: "UPDATE projections.projects4 SET (change_date, sequence, name, project_role_assertion, project_role_check, has_project_check, private_labeling_setting) = ($1, $2, $3, $4, $5, $6, $7) WHERE (id = $8) AND (instance_id = $9)", expectedArgs: []interface{}{ anyArg{}, uint64(15), @@ -203,7 +203,7 @@ func TestProjectProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "INSERT INTO projections.projects3 (id, creation_date, change_date, resource_owner, instance_id, sequence, name, project_role_assertion, project_role_check, has_project_check, private_labeling_setting, state) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12)", + expectedStmt: "INSERT INTO projections.projects4 (id, creation_date, change_date, resource_owner, instance_id, sequence, name, project_role_assertion, project_role_check, has_project_check, private_labeling_setting, state) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12)", expectedArgs: []interface{}{ "agg-id", anyArg{}, @@ -240,7 +240,7 @@ func TestProjectProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "DELETE FROM projections.projects3 WHERE (instance_id = $1) AND (resource_owner = $2)", + expectedStmt: "DELETE FROM projections.projects4 WHERE (instance_id = $1) AND (resource_owner = $2)", expectedArgs: []interface{}{ "instance-id", "agg-id", diff --git a/internal/query/sessions_test.go b/internal/query/sessions_test.go index ada4ef38f6..357ceb598b 100644 --- a/internal/query/sessions_test.go +++ b/internal/query/sessions_test.go @@ -30,7 +30,7 @@ var ( ` projections.sessions8.user_id,` + ` projections.sessions8.user_resource_owner,` + ` projections.sessions8.user_checked_at,` + - ` projections.login_names2.login_name,` + + ` projections.login_names3.login_name,` + ` projections.users8_humans.display_name,` + ` projections.sessions8.password_checked_at,` + ` projections.sessions8.intent_checked_at,` + @@ -47,7 +47,7 @@ var ( ` projections.sessions8.user_agent_header,` + ` projections.sessions8.expiration` + ` FROM projections.sessions8` + - ` LEFT JOIN projections.login_names2 ON projections.sessions8.user_id = projections.login_names2.user_id AND projections.sessions8.instance_id = projections.login_names2.instance_id` + + ` LEFT JOIN projections.login_names3 ON projections.sessions8.user_id = projections.login_names3.user_id AND projections.sessions8.instance_id = projections.login_names3.instance_id` + ` LEFT JOIN projections.users8_humans ON projections.sessions8.user_id = projections.users8_humans.user_id AND projections.sessions8.instance_id = projections.users8_humans.instance_id` + ` LEFT JOIN projections.users8 ON projections.sessions8.user_id = projections.users8.id AND projections.sessions8.instance_id = projections.users8.instance_id` + ` AS OF SYSTEM TIME '-1 ms'`) @@ -61,7 +61,7 @@ var ( ` projections.sessions8.user_id,` + ` projections.sessions8.user_resource_owner,` + ` projections.sessions8.user_checked_at,` + - ` projections.login_names2.login_name,` + + ` projections.login_names3.login_name,` + ` projections.users8_humans.display_name,` + ` projections.sessions8.password_checked_at,` + ` projections.sessions8.intent_checked_at,` + @@ -74,7 +74,7 @@ var ( ` projections.sessions8.expiration,` + ` COUNT(*) OVER ()` + ` FROM projections.sessions8` + - ` LEFT JOIN projections.login_names2 ON projections.sessions8.user_id = projections.login_names2.user_id AND projections.sessions8.instance_id = projections.login_names2.instance_id` + + ` LEFT JOIN projections.login_names3 ON projections.sessions8.user_id = projections.login_names3.user_id AND projections.sessions8.instance_id = projections.login_names3.instance_id` + ` LEFT JOIN projections.users8_humans ON projections.sessions8.user_id = projections.users8_humans.user_id AND projections.sessions8.instance_id = projections.users8_humans.instance_id` + ` LEFT JOIN projections.users8 ON projections.sessions8.user_id = projections.users8.id AND projections.sessions8.instance_id = projections.users8.instance_id` + ` AS OF SYSTEM TIME '-1 ms'`) diff --git a/internal/query/user.go b/internal/query/user.go index 3cd1bad5f9..1d4ac16004 100644 --- a/internal/query/user.go +++ b/internal/query/user.go @@ -175,14 +175,11 @@ var ( table: userTable, } - userLoginNamesTable = loginNameTable.setAlias("login_names") - userLoginNamesUserIDCol = LoginNameUserIDCol.setTable(userLoginNamesTable) - userLoginNamesNameCol = LoginNameNameCol.setTable(userLoginNamesTable) - userLoginNamesInstanceIDCol = LoginNameInstanceIDCol.setTable(userLoginNamesTable) - userLoginNamesOwnerRemovedUserCol = LoginNameOwnerRemovedUserCol.setTable(userLoginNamesTable) - userLoginNamesOwnerRemovedPolicyCol = LoginNameOwnerRemovedPolicyCol.setTable(userLoginNamesTable) - userLoginNamesOwnerRemovedDomainCol = LoginNameOwnerRemovedDomainCol.setTable(userLoginNamesTable) - userLoginNamesListCol = Column{ + userLoginNamesTable = loginNameTable.setAlias("login_names") + userLoginNamesUserIDCol = LoginNameUserIDCol.setTable(userLoginNamesTable) + userLoginNamesNameCol = LoginNameNameCol.setTable(userLoginNamesTable) + userLoginNamesInstanceIDCol = LoginNameInstanceIDCol.setTable(userLoginNamesTable) + userLoginNamesListCol = Column{ name: "loginnames", table: userLoginNamesTable, } @@ -190,14 +187,11 @@ var ( name: "loginnames_lower", table: userLoginNamesTable, } - userPreferredLoginNameTable = loginNameTable.setAlias("preferred_login_name") - userPreferredLoginNameUserIDCol = LoginNameUserIDCol.setTable(userPreferredLoginNameTable) - userPreferredLoginNameCol = LoginNameNameCol.setTable(userPreferredLoginNameTable) - userPreferredLoginNameIsPrimaryCol = LoginNameIsPrimaryCol.setTable(userPreferredLoginNameTable) - userPreferredLoginNameInstanceIDCol = LoginNameInstanceIDCol.setTable(userPreferredLoginNameTable) - userPreferredLoginNameOwnerRemovedUserCol = LoginNameOwnerRemovedUserCol.setTable(userPreferredLoginNameTable) - userPreferredLoginNameOwnerRemovedPolicyCol = LoginNameOwnerRemovedPolicyCol.setTable(userPreferredLoginNameTable) - userPreferredLoginNameOwnerRemovedDomainCol = LoginNameOwnerRemovedDomainCol.setTable(userPreferredLoginNameTable) + userPreferredLoginNameTable = loginNameTable.setAlias("preferred_login_name") + userPreferredLoginNameUserIDCol = LoginNameUserIDCol.setTable(userPreferredLoginNameTable) + userPreferredLoginNameCol = LoginNameNameCol.setTable(userPreferredLoginNameTable) + userPreferredLoginNameIsPrimaryCol = LoginNameIsPrimaryCol.setTable(userPreferredLoginNameTable) + userPreferredLoginNameInstanceIDCol = LoginNameInstanceIDCol.setTable(userPreferredLoginNameTable) ) var ( @@ -328,12 +322,6 @@ var ( func addUserWithoutOwnerRemoved(eq map[string]interface{}) { eq[UserOwnerRemovedCol.identifier()] = false - eq[userLoginNamesOwnerRemovedUserCol.identifier()] = false - eq[userLoginNamesOwnerRemovedPolicyCol.identifier()] = false - eq[userLoginNamesOwnerRemovedDomainCol.identifier()] = false - eq[userPreferredLoginNameOwnerRemovedUserCol.identifier()] = false - eq[userPreferredLoginNameOwnerRemovedPolicyCol.identifier()] = false - eq[userPreferredLoginNameOwnerRemovedDomainCol.identifier()] = false } func (q *Queries) GetUserByID(ctx context.Context, shouldTriggerBulk bool, userID string, withOwnerRemoved bool, queries ...SearchQuery) (user *User, err error) { @@ -752,16 +740,10 @@ func prepareLoginNamesQuery() (string, []interface{}, error) { "ARRAY_AGG("+userLoginNamesNameCol.identifier()+")::TEXT[] AS "+userLoginNamesListCol.name, "ARRAY_AGG(LOWER("+userLoginNamesNameCol.identifier()+"))::TEXT[] AS "+userLoginNamesLowerListCol.name, userLoginNamesInstanceIDCol.identifier(), - userLoginNamesOwnerRemovedUserCol.identifier(), - userLoginNamesOwnerRemovedPolicyCol.identifier(), - userLoginNamesOwnerRemovedDomainCol.identifier(), ).From(userLoginNamesTable.identifier()). GroupBy( userLoginNamesUserIDCol.identifier(), userLoginNamesInstanceIDCol.identifier(), - userLoginNamesOwnerRemovedUserCol.identifier(), - userLoginNamesOwnerRemovedPolicyCol.identifier(), - userLoginNamesOwnerRemovedDomainCol.identifier(), ).ToSql() } @@ -770,9 +752,6 @@ func preparePreferredLoginNamesQuery() (string, []interface{}, error) { userPreferredLoginNameUserIDCol.identifier(), userPreferredLoginNameCol.identifier(), userPreferredLoginNameInstanceIDCol.identifier(), - userPreferredLoginNameOwnerRemovedUserCol.identifier(), - userPreferredLoginNameOwnerRemovedPolicyCol.identifier(), - userPreferredLoginNameOwnerRemovedDomainCol.identifier(), ).From(userPreferredLoginNameTable.identifier()). Where(sq.Eq{ userPreferredLoginNameIsPrimaryCol.identifier(): true, diff --git a/internal/query/user_grant.go b/internal/query/user_grant.go index 0dd366f464..ef97705144 100644 --- a/internal/query/user_grant.go +++ b/internal/query/user_grant.go @@ -232,7 +232,6 @@ func addUserGrantWithoutOwnerRemoved(eq map[string]interface{}) { eq[UserGrantUserOwnerRemoved.identifier()] = false eq[UserGrantProjectOwnerRemoved.identifier()] = false eq[UserGrantGrantGrantedOrgRemoved.identifier()] = false - addLoginNameWithoutOwnerRemoved(eq) } func (q *Queries) UserGrant(ctx context.Context, shouldTriggerBulk bool, withOwnerRemoved bool, queries ...SearchQuery) (grant *UserGrant, err error) { diff --git a/internal/query/user_grant_test.go b/internal/query/user_grant_test.go index 918003f615..f17ef0e2bf 100644 --- a/internal/query/user_grant_test.go +++ b/internal/query/user_grant_test.go @@ -31,20 +31,20 @@ var ( ", projections.users8_humans.email" + ", projections.users8_humans.display_name" + ", projections.users8_humans.avatar_key" + - ", projections.login_names2.login_name" + + ", projections.login_names3.login_name" + ", projections.user_grants3.resource_owner" + ", projections.orgs1.name" + ", projections.orgs1.primary_domain" + ", projections.user_grants3.project_id" + - ", projections.projects3.name" + + ", projections.projects4.name" + " FROM projections.user_grants3" + " LEFT JOIN projections.users8 ON projections.user_grants3.user_id = projections.users8.id AND projections.user_grants3.instance_id = projections.users8.instance_id" + " LEFT JOIN projections.users8_humans ON projections.user_grants3.user_id = projections.users8_humans.user_id AND projections.user_grants3.instance_id = projections.users8_humans.instance_id" + " LEFT JOIN projections.orgs1 ON projections.user_grants3.resource_owner = projections.orgs1.id AND projections.user_grants3.instance_id = projections.orgs1.instance_id" + - " LEFT JOIN projections.projects3 ON projections.user_grants3.project_id = projections.projects3.id AND projections.user_grants3.instance_id = projections.projects3.instance_id" + - " LEFT JOIN projections.login_names2 ON projections.user_grants3.user_id = projections.login_names2.user_id AND projections.user_grants3.instance_id = projections.login_names2.instance_id" + + " LEFT JOIN projections.projects4 ON projections.user_grants3.project_id = projections.projects4.id AND projections.user_grants3.instance_id = projections.projects4.instance_id" + + " LEFT JOIN projections.login_names3 ON projections.user_grants3.user_id = projections.login_names3.user_id AND projections.user_grants3.instance_id = projections.login_names3.instance_id" + ` AS OF SYSTEM TIME '-1 ms' ` + - " WHERE projections.login_names2.is_primary = $1") + " WHERE projections.login_names3.is_primary = $1") userGrantCols = []string{ "id", "creation_date", @@ -86,21 +86,21 @@ var ( ", projections.users8_humans.email" + ", projections.users8_humans.display_name" + ", projections.users8_humans.avatar_key" + - ", projections.login_names2.login_name" + + ", projections.login_names3.login_name" + ", projections.user_grants3.resource_owner" + ", projections.orgs1.name" + ", projections.orgs1.primary_domain" + ", projections.user_grants3.project_id" + - ", projections.projects3.name" + + ", projections.projects4.name" + ", COUNT(*) OVER ()" + " FROM projections.user_grants3" + " LEFT JOIN projections.users8 ON projections.user_grants3.user_id = projections.users8.id AND projections.user_grants3.instance_id = projections.users8.instance_id" + " LEFT JOIN projections.users8_humans ON projections.user_grants3.user_id = projections.users8_humans.user_id AND projections.user_grants3.instance_id = projections.users8_humans.instance_id" + " LEFT JOIN projections.orgs1 ON projections.user_grants3.resource_owner = projections.orgs1.id AND projections.user_grants3.instance_id = projections.orgs1.instance_id" + - " LEFT JOIN projections.projects3 ON projections.user_grants3.project_id = projections.projects3.id AND projections.user_grants3.instance_id = projections.projects3.instance_id" + - " LEFT JOIN projections.login_names2 ON projections.user_grants3.user_id = projections.login_names2.user_id AND projections.user_grants3.instance_id = projections.login_names2.instance_id" + + " LEFT JOIN projections.projects4 ON projections.user_grants3.project_id = projections.projects4.id AND projections.user_grants3.instance_id = projections.projects4.instance_id" + + " LEFT JOIN projections.login_names3 ON projections.user_grants3.user_id = projections.login_names3.user_id AND projections.user_grants3.instance_id = projections.login_names3.instance_id" + ` AS OF SYSTEM TIME '-1 ms' ` + - " WHERE projections.login_names2.is_primary = $1") + " WHERE projections.login_names3.is_primary = $1") userGrantsCols = append( userGrantCols, "count", diff --git a/internal/query/user_membership.go b/internal/query/user_membership.go index 96d1139834..9bf6c5b6d6 100644 --- a/internal/query/user_membership.go +++ b/internal/query/user_membership.go @@ -67,10 +67,6 @@ func NewMembershipUserIDQuery(userID string) (SearchQuery, error) { return NewTextQuery(membershipUserID.setTable(membershipAlias), userID, TextEquals) } -func NewMembershipResourceOwnerQuery(value string) (SearchQuery, error) { - return NewTextQuery(membershipResourceOwner.setTable(membershipAlias), value, TextEquals) -} - func NewMembershipOrgIDQuery(value string) (SearchQuery, error) { return NewTextQuery(membershipOrgID, value, TextEquals) } @@ -107,7 +103,7 @@ func (q *MembershipSearchQuery) toQuery(query sq.SelectBuilder) sq.SelectBuilder return query } -func (q *Queries) Memberships(ctx context.Context, queries *MembershipSearchQuery, withOwnerRemoved, shouldTrigger bool) (memberships *Memberships, err error) { +func (q *Queries) Memberships(ctx context.Context, queries *MembershipSearchQuery, shouldTrigger bool) (memberships *Memberships, err error) { ctx, span := tracing.NewSpan(ctx) defer func() { span.EndWithError(err) }() @@ -142,7 +138,7 @@ func (q *Queries) Memberships(ctx context.Context, queries *MembershipSearchQuer wg.Wait() } - query, queryArgs, scan := prepareMembershipsQuery(ctx, q.client, withOwnerRemoved, queries) + query, queryArgs, scan := prepareMembershipsQuery(ctx, q.client, queries) eq := sq.Eq{membershipInstanceID.identifier(): authz.GetInstance(ctx).InstanceID()} stmt, args, err := queries.toQuery(query).Where(eq).ToSql() if err != nil { @@ -219,26 +215,13 @@ var ( name: projection.ProjectGrantColumnGrantedOrgID, table: membershipAlias, } - - membershipOwnerRemoved = Column{ - name: projection.MemberOwnerRemoved, - table: membershipAlias, - } - membershipOwnerRemovedUser = Column{ - name: projection.MemberUserOwnerRemoved, - table: membershipAlias, - } - membershipGrantedOrgRemoved = Column{ - name: projection.ProjectGrantMemberGrantedOrgRemoved, - table: membershipAlias, - } ) -func getMembershipFromQuery(withOwnerRemoved bool, queries *MembershipSearchQuery) (string, []interface{}) { - orgMembers, orgMembersArgs := prepareOrgMember(withOwnerRemoved, queries) - iamMembers, iamMembersArgs := prepareIAMMember(withOwnerRemoved, queries) - projectMembers, projectMembersArgs := prepareProjectMember(withOwnerRemoved, queries) - projectGrantMembers, projectGrantMembersArgs := prepareProjectGrantMember(withOwnerRemoved, queries) +func getMembershipFromQuery(queries *MembershipSearchQuery) (string, []interface{}) { + orgMembers, orgMembersArgs := prepareOrgMember(queries) + iamMembers, iamMembersArgs := prepareIAMMember(queries) + projectMembers, projectMembersArgs := prepareProjectMember(queries) + projectGrantMembers, projectGrantMembersArgs := prepareProjectGrantMember(queries) args := make([]interface{}, 0) args = append(append(append(append(args, orgMembersArgs...), iamMembersArgs...), projectMembersArgs...), projectGrantMembersArgs...) @@ -254,8 +237,8 @@ func getMembershipFromQuery(withOwnerRemoved bool, queries *MembershipSearchQuer args } -func prepareMembershipsQuery(ctx context.Context, db prepareDatabase, withOwnerRemoved bool, queries *MembershipSearchQuery) (sq.SelectBuilder, []interface{}, func(*sql.Rows) (*Memberships, error)) { - query, args := getMembershipFromQuery(withOwnerRemoved, queries) +func prepareMembershipsQuery(ctx context.Context, db prepareDatabase, queries *MembershipSearchQuery) (sq.SelectBuilder, []interface{}, func(*sql.Rows) (*Memberships, error)) { + query, args := getMembershipFromQuery(queries) return sq.Select( membershipUserID.identifier(), membershipRoles.identifier(), @@ -358,7 +341,7 @@ func prepareMembershipsQuery(ctx context.Context, db prepareDatabase, withOwnerR } } -func prepareOrgMember(withOwnerRemoved bool, query *MembershipSearchQuery) (string, []interface{}) { +func prepareOrgMember(query *MembershipSearchQuery) (string, []interface{}) { builder := sq.Select( OrgMemberUserID.identifier(), OrgMemberRoles.identifier(), @@ -378,17 +361,10 @@ func prepareOrgMember(withOwnerRemoved bool, query *MembershipSearchQuery) (stri builder = q.toQuery(builder) } } - - if !withOwnerRemoved { - eq := sq.Eq{} - addOrgMemberWithoutOwnerRemoved(eq) - builder = builder.Where(eq) - } - return builder.MustSql() } -func prepareIAMMember(withOwnerRemoved bool, query *MembershipSearchQuery) (string, []interface{}) { +func prepareIAMMember(query *MembershipSearchQuery) (string, []interface{}) { builder := sq.Select( InstanceMemberUserID.identifier(), InstanceMemberRoles.identifier(), @@ -408,16 +384,10 @@ func prepareIAMMember(withOwnerRemoved bool, query *MembershipSearchQuery) (stri builder = q.toQuery(builder) } } - - if !withOwnerRemoved { - eq := sq.Eq{} - addIamMemberWithoutOwnerRemoved(eq) - builder = builder.Where(eq) - } return builder.MustSql() } -func prepareProjectMember(withOwnerRemoved bool, query *MembershipSearchQuery) (string, []interface{}) { +func prepareProjectMember(query *MembershipSearchQuery) (string, []interface{}) { builder := sq.Select( ProjectMemberUserID.identifier(), ProjectMemberRoles.identifier(), @@ -438,15 +408,10 @@ func prepareProjectMember(withOwnerRemoved bool, query *MembershipSearchQuery) ( } } - if !withOwnerRemoved { - eq := sq.Eq{} - addProjectMemberWithoutOwnerRemoved(eq) - builder = builder.Where(eq) - } return builder.MustSql() } -func prepareProjectGrantMember(withOwnerRemoved bool, query *MembershipSearchQuery) (string, []interface{}) { +func prepareProjectGrantMember(query *MembershipSearchQuery) (string, []interface{}) { builder := sq.Select( ProjectGrantMemberUserID.identifier(), ProjectGrantMemberRoles.identifier(), @@ -466,11 +431,5 @@ func prepareProjectGrantMember(withOwnerRemoved bool, query *MembershipSearchQue builder = q.toQuery(builder) } } - - if !withOwnerRemoved { - eq := sq.Eq{} - addProjectGrantMemberWithoutOwnerRemoved(eq) - builder = builder.Where(eq) - } return builder.MustSql() } diff --git a/internal/query/user_membership_test.go b/internal/query/user_membership_test.go index c2453eda1f..a0ea3cda31 100644 --- a/internal/query/user_membership_test.go +++ b/internal/query/user_membership_test.go @@ -26,8 +26,8 @@ var ( ", members.id" + ", members.project_id" + ", members.grant_id" + - ", projections.project_grants3.granted_org_id" + - ", projections.projects3.name" + + ", projections.project_grants4.granted_org_id" + + ", projections.projects4.name" + ", projections.orgs1.name" + ", projections.instances.name" + ", COUNT(*) OVER ()" + @@ -43,8 +43,7 @@ var ( ", NULL::TEXT AS id" + ", NULL::TEXT AS project_id" + ", NULL::TEXT AS grant_id" + - " FROM projections.org_members3 AS members" + - " WHERE members.owner_removed = $1 AND members.user_owner_removed = $2" + + " FROM projections.org_members4 AS members" + " UNION ALL " + "SELECT members.user_id" + ", members.roles" + @@ -57,8 +56,7 @@ var ( ", members.id" + ", NULL::TEXT AS project_id" + ", NULL::TEXT AS grant_id" + - " FROM projections.instance_members3 AS members" + - " WHERE members.owner_removed = $3 AND members.user_owner_removed = $4" + + " FROM projections.instance_members4 AS members" + " UNION ALL " + "SELECT members.user_id" + ", members.roles" + @@ -71,8 +69,7 @@ var ( ", NULL::TEXT AS id" + ", members.project_id" + ", NULL::TEXT AS grant_id" + - " FROM projections.project_members3 AS members" + - " WHERE members.owner_removed = $5 AND members.user_owner_removed = $6" + + " FROM projections.project_members4 AS members" + " UNION ALL " + "SELECT members.user_id" + ", members.roles" + @@ -85,12 +82,11 @@ var ( ", NULL::TEXT AS id" + ", members.project_id" + ", members.grant_id" + - " FROM projections.project_grant_members3 AS members" + - " WHERE members.granted_org_removed = $7 AND members.owner_removed = $8 AND members.user_owner_removed = $9" + + " FROM projections.project_grant_members4 AS members" + ") AS members" + - " LEFT JOIN projections.projects3 ON members.project_id = projections.projects3.id AND members.instance_id = projections.projects3.instance_id" + + " LEFT JOIN projections.projects4 ON members.project_id = projections.projects4.id AND members.instance_id = projections.projects4.instance_id" + " LEFT JOIN projections.orgs1 ON members.org_id = projections.orgs1.id AND members.instance_id = projections.orgs1.instance_id" + - " LEFT JOIN projections.project_grants3 ON members.grant_id = projections.project_grants3.grant_id AND members.instance_id = projections.project_grants3.instance_id" + + " LEFT JOIN projections.project_grants4 ON members.grant_id = projections.project_grants4.grant_id AND members.instance_id = projections.project_grants4.instance_id" + " LEFT JOIN projections.instances ON members.instance_id = projections.instances.id" + ` AS OF SYSTEM TIME '-1 ms'`) membershipCols = []string{ @@ -125,7 +121,7 @@ func Test_MembershipPrepares(t *testing.T) { }{ { name: "prepareMembershipsQuery no result", - prepare: prepareMembershipWrapper(false), + prepare: prepareMembershipWrapper(), want: want{ sqlExpectations: mockQueries( membershipsStmt, @@ -137,7 +133,7 @@ func Test_MembershipPrepares(t *testing.T) { }, { name: "prepareMembershipsQuery one org member", - prepare: prepareMembershipWrapper(false), + prepare: prepareMembershipWrapper(), want: want{ sqlExpectations: mockQueries( membershipsStmt, @@ -181,7 +177,7 @@ func Test_MembershipPrepares(t *testing.T) { }, { name: "prepareMembershipsQuery one instance member", - prepare: prepareMembershipWrapper(false), + prepare: prepareMembershipWrapper(), want: want{ sqlExpectations: mockQueries( membershipsStmt, @@ -225,7 +221,7 @@ func Test_MembershipPrepares(t *testing.T) { }, { name: "prepareMembershipsQuery one project member", - prepare: prepareMembershipWrapper(false), + prepare: prepareMembershipWrapper(), want: want{ sqlExpectations: mockQueries( membershipsStmt, @@ -269,7 +265,7 @@ func Test_MembershipPrepares(t *testing.T) { }, { name: "prepareMembershipsQuery one project grant member", - prepare: prepareMembershipWrapper(false), + prepare: prepareMembershipWrapper(), want: want{ sqlExpectations: mockQueries( membershipsStmt, @@ -318,7 +314,7 @@ func Test_MembershipPrepares(t *testing.T) { }, { name: "prepareMembershipsQuery one for each member type", - prepare: prepareMembershipWrapper(false), + prepare: prepareMembershipWrapper(), want: want{ sqlExpectations: mockQueries( membershipsStmt, @@ -442,7 +438,7 @@ func Test_MembershipPrepares(t *testing.T) { }, { name: "prepareMembershipsQuery sql err", - prepare: prepareMembershipWrapper(false), + prepare: prepareMembershipWrapper(), want: want{ sqlExpectations: mockQueryErr( membershipsStmt, @@ -465,9 +461,9 @@ func Test_MembershipPrepares(t *testing.T) { } } -func prepareMembershipWrapper(withOwnerRemoved bool) func(ctx context.Context, db prepareDatabase) (sq.SelectBuilder, func(*sql.Rows) (*Memberships, error)) { +func prepareMembershipWrapper() func(ctx context.Context, db prepareDatabase) (sq.SelectBuilder, func(*sql.Rows) (*Memberships, error)) { return func(ctx context.Context, db prepareDatabase) (sq.SelectBuilder, func(*sql.Rows) (*Memberships, error)) { - builder, _, fun := prepareMembershipsQuery(ctx, db, withOwnerRemoved, &MembershipSearchQuery{}) + builder, _, fun := prepareMembershipsQuery(ctx, db, &MembershipSearchQuery{}) return builder, fun } } diff --git a/internal/query/user_test.go b/internal/query/user_test.go index 866cab0cad..55899ba748 100644 --- a/internal/query/user_test.go +++ b/internal/query/user_test.go @@ -16,11 +16,11 @@ import ( ) var ( - loginNamesQuery = `SELECT login_names.user_id, ARRAY_AGG(login_names.login_name)::TEXT[] AS loginnames, ARRAY_AGG(LOWER(login_names.login_name))::TEXT[] AS loginnames_lower, login_names.instance_id, login_names.user_owner_removed, login_names.policy_owner_removed, login_names.domain_owner_removed` + - ` FROM projections.login_names2 AS login_names` + - ` GROUP BY login_names.user_id, login_names.instance_id, login_names.user_owner_removed, login_names.policy_owner_removed, login_names.domain_owner_removed` - preferredLoginNameQuery = `SELECT preferred_login_name.user_id, preferred_login_name.login_name, preferred_login_name.instance_id, preferred_login_name.user_owner_removed, preferred_login_name.policy_owner_removed, preferred_login_name.domain_owner_removed` + - ` FROM projections.login_names2 AS preferred_login_name` + + loginNamesQuery = `SELECT login_names.user_id, ARRAY_AGG(login_names.login_name)::TEXT[] AS loginnames, ARRAY_AGG(LOWER(login_names.login_name))::TEXT[] AS loginnames_lower, login_names.instance_id` + + ` FROM projections.login_names3 AS login_names` + + ` GROUP BY login_names.user_id, login_names.instance_id` + preferredLoginNameQuery = `SELECT preferred_login_name.user_id, preferred_login_name.login_name, preferred_login_name.instance_id` + + ` FROM projections.login_names3 AS preferred_login_name` + ` WHERE preferred_login_name.is_primary = $1` userQuery = `SELECT projections.users8.id,` + ` projections.users8.creation_date,` + diff --git a/internal/query/zitadel_permission.go b/internal/query/zitadel_permission.go index 29baa7680b..b44ac4d85b 100644 --- a/internal/query/zitadel_permission.go +++ b/internal/query/zitadel_permission.go @@ -26,7 +26,7 @@ func (q *Queries) MyZitadelPermissions(ctx context.Context, orgID, userID string } memberships, err := q.Memberships(ctx, &MembershipSearchQuery{ Queries: []SearchQuery{userIDQuery, Or(orgIDsQuery, grantedOrgIDQuery)}, - }, false, false) + }, false) if err != nil { return nil, err }