feat: member queries (#2796)

* refactor(domain): add user type

* fix(projections): start with login names

* fix(login_policy): correct handling of user domain claimed event

* fix(projections): add members

* refactor: simplify member projections

* add migration for members

* add metadata to member projections

* refactor: login name projection

* fix: set correct suffixes on login name projections

* test(projections): login name reduces

* fix: correct cols in reduce member

* test(projections): org, iam, project members

* member additional cols and conds as opt,
add project grant members

* fix(migration): members

* fix(migration): correct database name

* migration version

* migs

* better naming for member cond and col

* split project and project grant members

* prepare member columns

* feat(queries): membership query

* test(queries): membership prepare

* fix(queries): multiple projections for latest sequence

* fix(api): use query for membership queries in auth and management

* feat: org member queries

* fix(api): use query for iam member calls

* fix(queries): org members

* fix(queries): project members

* fix(queries): project grant members

* fix(query): member queries and user avatar column

* member cols

* fix(queries): membership stmt

* fix user test

* fix user test

* fix(membership): correct display name

* fix(projection): additional member manipulation events

* additional member tests

* fix(projections): additional events of idp links

* fix: use query for memberships (#2797)

* fix(api): use query for memberships

* remove comment

* handle err

* refactor(projections): idp user link user aggregate type

* fix(projections): handle old user events

* fix(api): add asset prefix

* no image for iam members
This commit is contained in:
Silvan
2021-12-16 14:25:38 +01:00
committed by GitHub
parent fb43b13232
commit d2ea9a1b8c
44 changed files with 2820 additions and 757 deletions

View File

@@ -23,7 +23,6 @@ type Membership struct {
ChangeDate time.Time
Sequence uint64
ResourceOwner string
DisplayName string
Org *OrgMembership
IAM *IAMMembership
@@ -33,19 +32,23 @@ type Membership struct {
type OrgMembership struct {
OrgID string
Name string
}
type IAMMembership struct {
IAMID string
Name string
}
type ProjectMembership struct {
ProjectID string
Name string
}
type ProjectGrantMembership struct {
ProjectID string
GrantID string
ProjectID string
ProjectName string
GrantID string
}
type MembershipSearchQuery struct {
@@ -177,12 +180,12 @@ func prepareMembershipsQuery() (sq.SelectBuilder, func(*sql.Rows) (*Memberships,
membershipIAMID.identifier(),
membershipProjectID.identifier(),
membershipGrantID.identifier(),
HumanDisplayNameCol.identifier(),
MachineNameCol.identifier(),
ProjectColumnName.identifier(),
OrgColumnName.identifier(),
countColumn.identifier(),
).From(membershipFrom).
LeftJoin(join(HumanUserIDCol, membershipUserID)).
LeftJoin(join(MachineUserIDCol, membershipUserID)).
LeftJoin(join(ProjectColumnID, membershipProjectID)).
LeftJoin(join(OrgColumnID, membershipOrgID)).
PlaceholderFormat(sq.Dollar),
func(rows *sql.Rows) (*Memberships, error) {
memberships := make([]*Membership, 0)
@@ -196,8 +199,8 @@ func prepareMembershipsQuery() (sq.SelectBuilder, func(*sql.Rows) (*Memberships,
projectID = sql.NullString{}
grantID = sql.NullString{}
roles = pq.StringArray{}
displayName = sql.NullString{}
machineName = sql.NullString{}
projectName = sql.NullString{}
orgName = sql.NullString{}
)
err := rows.Scan(
@@ -211,8 +214,8 @@ func prepareMembershipsQuery() (sq.SelectBuilder, func(*sql.Rows) (*Memberships,
&iamID,
&projectID,
&grantID,
&displayName,
&machineName,
&projectName,
&orgName,
&count,
)
@@ -222,28 +225,26 @@ func prepareMembershipsQuery() (sq.SelectBuilder, func(*sql.Rows) (*Memberships,
membership.Roles = roles
if displayName.Valid {
membership.DisplayName = displayName.String
} else if machineName.Valid {
membership.DisplayName = machineName.String
}
if orgID.Valid {
membership.Org = &OrgMembership{
OrgID: orgID.String,
Name: orgName.String,
}
} else if iamID.Valid {
membership.IAM = &IAMMembership{
IAMID: iamID.String,
Name: iamID.String,
}
} else if projectID.Valid && grantID.Valid {
membership.ProjectGrant = &ProjectGrantMembership{
ProjectID: projectID.String,
GrantID: grantID.String,
ProjectID: projectID.String,
ProjectName: projectName.String,
GrantID: grantID.String,
}
} else if projectID.Valid {
membership.Project = &ProjectMembership{
ProjectID: projectID.String,
Name: projectName.String,
}
}