mirror of
https://github.com/zitadel/zitadel.git
synced 2025-02-28 21:17:23 +00:00
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
This commit is contained in:
parent
3bed5f50a8
commit
0ec7a74877
@ -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"`
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -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 {
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -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")
|
||||
|
@ -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",
|
||||
|
@ -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{
|
||||
|
@ -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` +
|
||||
|
@ -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")
|
||||
|
@ -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",
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -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")
|
||||
|
@ -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",
|
||||
|
@ -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")
|
||||
|
@ -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) {
|
||||
|
@ -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")
|
||||
|
@ -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",
|
||||
|
@ -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",
|
||||
|
@ -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")
|
||||
|
@ -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",
|
||||
|
@ -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()
|
||||
|
@ -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",
|
||||
|
@ -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",
|
||||
|
@ -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})),
|
||||
),
|
||||
)
|
||||
}
|
||||
|
@ -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",
|
||||
},
|
||||
|
@ -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,
|
||||
),
|
||||
),
|
||||
),
|
||||
|
@ -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",
|
||||
},
|
||||
|
@ -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})),
|
||||
),
|
||||
)
|
||||
}
|
||||
|
@ -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",
|
||||
|
@ -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,
|
||||
|
@ -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,
|
||||
),
|
||||
),
|
||||
),
|
||||
|
@ -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",
|
||||
},
|
||||
|
@ -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})),
|
||||
),
|
||||
)
|
||||
}
|
||||
|
@ -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})),
|
||||
),
|
||||
)
|
||||
}
|
||||
|
@ -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),
|
||||
)
|
||||
}
|
||||
|
||||
|
@ -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",
|
||||
|
@ -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",
|
||||
|
@ -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,
|
||||
),
|
||||
),
|
||||
),
|
||||
|
@ -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",
|
||||
|
@ -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})),
|
||||
),
|
||||
)
|
||||
}
|
||||
|
@ -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",
|
||||
|
@ -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",
|
||||
|
@ -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'`)
|
||||
|
@ -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,
|
||||
|
@ -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) {
|
||||
|
@ -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",
|
||||
|
@ -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()
|
||||
}
|
||||
|
@ -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
|
||||
}
|
||||
}
|
||||
|
@ -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,` +
|
||||
|
@ -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
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user