Remove membership derived struct fields
Signed-off-by: Émile Ré <emile@getprobo.com>
This commit is contained in:
@@ -37,10 +37,12 @@ type (
|
|||||||
Role MembershipRole `db:"role"`
|
Role MembershipRole `db:"role"`
|
||||||
Source MembershipSource `db:"source"`
|
Source MembershipSource `db:"source"`
|
||||||
State MembershipState `db:"state"`
|
State MembershipState `db:"state"`
|
||||||
FullName string `db:"full_name"`
|
// FIXME: remove after scim is based on profile
|
||||||
EmailAddress mail.Addr `db:"email_address"`
|
EmailAddress mail.Addr `db:"-"`
|
||||||
CreatedAt time.Time `db:"created_at"`
|
FullName string `db:"-"`
|
||||||
UpdatedAt time.Time `db:"updated_at"`
|
|
||||||
|
CreatedAt time.Time `db:"created_at"`
|
||||||
|
UpdatedAt time.Time `db:"updated_at"`
|
||||||
}
|
}
|
||||||
|
|
||||||
Memberships []*Membership
|
Memberships []*Membership
|
||||||
@@ -48,10 +50,6 @@ type (
|
|||||||
|
|
||||||
func (m Membership) CursorKey(orderBy MembershipOrderField) page.CursorKey {
|
func (m Membership) CursorKey(orderBy MembershipOrderField) page.CursorKey {
|
||||||
switch orderBy {
|
switch orderBy {
|
||||||
case MembershipOrderFieldFullName:
|
|
||||||
return page.NewCursorKey(m.ID, m.FullName)
|
|
||||||
case MembershipOrderFieldEmailAddress:
|
|
||||||
return page.NewCursorKey(m.ID, m.EmailAddress)
|
|
||||||
case MembershipOrderFieldRole:
|
case MembershipOrderFieldRole:
|
||||||
return page.NewCursorKey(m.ID, m.Role)
|
return page.NewCursorKey(m.ID, m.Role)
|
||||||
case MembershipOrderFieldCreatedAt:
|
case MembershipOrderFieldCreatedAt:
|
||||||
@@ -63,39 +61,20 @@ func (m Membership) CursorKey(orderBy MembershipOrderField) page.CursorKey {
|
|||||||
|
|
||||||
func (m *Membership) LoadByIdentityInOrganization(ctx context.Context, conn pg.Conn, identityID gid.GID, organizationID gid.GID) error {
|
func (m *Membership) LoadByIdentityInOrganization(ctx context.Context, conn pg.Conn, identityID gid.GID, organizationID gid.GID) error {
|
||||||
q := `
|
q := `
|
||||||
WITH mbr AS (
|
|
||||||
SELECT
|
|
||||||
id,
|
|
||||||
identity_id,
|
|
||||||
organization_id,
|
|
||||||
role,
|
|
||||||
source,
|
|
||||||
state,
|
|
||||||
created_at,
|
|
||||||
updated_at
|
|
||||||
FROM
|
|
||||||
iam_memberships
|
|
||||||
WHERE
|
|
||||||
identity_id = @identity_id
|
|
||||||
AND organization_id = @organization_id
|
|
||||||
)
|
|
||||||
SELECT
|
SELECT
|
||||||
mbr.id,
|
id,
|
||||||
mbr.identity_id,
|
identity_id,
|
||||||
mbr.organization_id,
|
organization_id,
|
||||||
mbr.role,
|
role,
|
||||||
mbr.source,
|
source,
|
||||||
mbr.state,
|
state,
|
||||||
COALESCE(mp.full_name, i.full_name, '') as full_name,
|
created_at,
|
||||||
i.email_address,
|
updated_at
|
||||||
o.name AS organization_name,
|
|
||||||
mbr.created_at,
|
|
||||||
mbr.updated_at
|
|
||||||
FROM
|
FROM
|
||||||
mbr
|
iam_memberships
|
||||||
JOIN identities i ON mbr.identity_id = i.id
|
WHERE
|
||||||
JOIN organizations o ON mbr.organization_id = o.id
|
identity_id = @identity_id
|
||||||
LEFT JOIN iam_membership_profiles mp ON mp.membership_id = mbr.id
|
AND organization_id = @organization_id
|
||||||
`
|
`
|
||||||
|
|
||||||
args := pgx.StrictNamedArgs{
|
args := pgx.StrictNamedArgs{
|
||||||
@@ -184,42 +163,20 @@ func (m *Membership) LoadByID(
|
|||||||
membershipID gid.GID,
|
membershipID gid.GID,
|
||||||
) error {
|
) error {
|
||||||
query := `
|
query := `
|
||||||
WITH mbr AS (
|
|
||||||
SELECT
|
|
||||||
id,
|
|
||||||
identity_id,
|
|
||||||
organization_id,
|
|
||||||
role,
|
|
||||||
source,
|
|
||||||
state,
|
|
||||||
created_at,
|
|
||||||
updated_at
|
|
||||||
FROM
|
|
||||||
iam_memberships
|
|
||||||
WHERE
|
|
||||||
id = @membership_id
|
|
||||||
AND %s
|
|
||||||
)
|
|
||||||
SELECT
|
SELECT
|
||||||
mbr.id,
|
id,
|
||||||
mbr.identity_id,
|
identity_id,
|
||||||
mbr.organization_id,
|
organization_id,
|
||||||
mbr.role,
|
role,
|
||||||
mbr.source,
|
source,
|
||||||
mbr.state,
|
state,
|
||||||
COALESCE(mp.full_name, i.full_name, '') as full_name,
|
created_at,
|
||||||
i.email_address,
|
updated_at
|
||||||
o.name as organization_name,
|
|
||||||
mbr.created_at,
|
|
||||||
mbr.updated_at
|
|
||||||
FROM
|
FROM
|
||||||
mbr
|
iam_memberships
|
||||||
JOIN
|
WHERE
|
||||||
identities i ON mbr.identity_id = i.id
|
id = @membership_id
|
||||||
JOIN
|
AND %s
|
||||||
organizations o ON mbr.organization_id = o.id
|
|
||||||
LEFT JOIN
|
|
||||||
iam_membership_profiles mp ON mp.membership_id = mbr.id
|
|
||||||
`
|
`
|
||||||
|
|
||||||
query = fmt.Sprintf(query, scope.SQLFragment())
|
query = fmt.Sprintf(query, scope.SQLFragment())
|
||||||
@@ -293,45 +250,23 @@ func (m *Membership) LoadByIdentityAndOrg(
|
|||||||
organizationID gid.GID,
|
organizationID gid.GID,
|
||||||
) error {
|
) error {
|
||||||
q := `
|
q := `
|
||||||
WITH mbr AS (
|
|
||||||
SELECT
|
|
||||||
am.id,
|
|
||||||
am.identity_id,
|
|
||||||
am.organization_id,
|
|
||||||
am.role,
|
|
||||||
am.source,
|
|
||||||
am.state,
|
|
||||||
am.created_at,
|
|
||||||
am.updated_at
|
|
||||||
FROM
|
|
||||||
iam_memberships am
|
|
||||||
WHERE
|
|
||||||
am.identity_id = @identity_id
|
|
||||||
AND am.organization_id = @organization_id
|
|
||||||
AND %s
|
|
||||||
)
|
|
||||||
SELECT
|
SELECT
|
||||||
mbr.id,
|
id,
|
||||||
mbr.identity_id,
|
identity_id,
|
||||||
mbr.organization_id,
|
organization_id,
|
||||||
mbr.role,
|
role,
|
||||||
mbr.source,
|
source,
|
||||||
mbr.state,
|
state,
|
||||||
COALESCE(mp.full_name, i.full_name, '') as full_name,
|
created_at,
|
||||||
i.email_address,
|
updated_at
|
||||||
o.name as organization_name,
|
|
||||||
mbr.created_at,
|
|
||||||
mbr.updated_at
|
|
||||||
FROM
|
FROM
|
||||||
mbr
|
iam_memberships
|
||||||
JOIN
|
WHERE
|
||||||
identities i ON mbr.identity_id = i.id
|
identity_id = @identity_id
|
||||||
JOIN
|
AND organization_id = @organization_id
|
||||||
organizations o ON mbr.organization_id = o.id
|
AND %s
|
||||||
LEFT JOIN
|
)
|
||||||
iam_membership_profiles mp ON mp.membership_id = mbr.id
|
|
||||||
`
|
`
|
||||||
|
|
||||||
q = fmt.Sprintf(q, scope.SQLFragment())
|
q = fmt.Sprintf(q, scope.SQLFragment())
|
||||||
|
|
||||||
args := pgx.StrictNamedArgs{
|
args := pgx.StrictNamedArgs{
|
||||||
@@ -432,46 +367,6 @@ func (m *Memberships) LoadByOrganizationID(
|
|||||||
filter *MembershipFilter,
|
filter *MembershipFilter,
|
||||||
) error {
|
) error {
|
||||||
query := `
|
query := `
|
||||||
WITH m AS (
|
|
||||||
SELECT
|
|
||||||
id,
|
|
||||||
identity_id,
|
|
||||||
organization_id,
|
|
||||||
role,
|
|
||||||
source,
|
|
||||||
state,
|
|
||||||
created_at,
|
|
||||||
updated_at
|
|
||||||
FROM
|
|
||||||
iam_memberships
|
|
||||||
WHERE
|
|
||||||
organization_id = @organization_id
|
|
||||||
AND %s
|
|
||||||
),
|
|
||||||
r AS (
|
|
||||||
SELECT
|
|
||||||
m.id,
|
|
||||||
m.identity_id,
|
|
||||||
m.organization_id,
|
|
||||||
m.role,
|
|
||||||
m.source,
|
|
||||||
m.state,
|
|
||||||
COALESCE(mp.full_name, i.full_name, '') as full_name,
|
|
||||||
o.name as organization_name,
|
|
||||||
i.email_address,
|
|
||||||
m.created_at,
|
|
||||||
m.updated_at
|
|
||||||
FROM
|
|
||||||
m
|
|
||||||
JOIN
|
|
||||||
identities i ON m.identity_id = i.id
|
|
||||||
JOIN
|
|
||||||
organizations o ON m.organization_id = o.id
|
|
||||||
LEFT JOIN
|
|
||||||
iam_membership_profiles mp ON mp.membership_id = m.id
|
|
||||||
WHERE
|
|
||||||
%s
|
|
||||||
)
|
|
||||||
SELECT
|
SELECT
|
||||||
id,
|
id,
|
||||||
identity_id,
|
identity_id,
|
||||||
@@ -479,15 +374,15 @@ SELECT
|
|||||||
role,
|
role,
|
||||||
source,
|
source,
|
||||||
state,
|
state,
|
||||||
full_name,
|
|
||||||
organization_name,
|
|
||||||
email_address,
|
|
||||||
created_at,
|
created_at,
|
||||||
updated_at
|
updated_at
|
||||||
FROM
|
FROM
|
||||||
r
|
iam_memberships
|
||||||
WHERE
|
WHERE
|
||||||
%s
|
%s
|
||||||
|
AND %s
|
||||||
|
organization_id = @organization_id
|
||||||
|
AND %s
|
||||||
`
|
`
|
||||||
|
|
||||||
query = fmt.Sprintf(query, scope.SQLFragment(), filter.SQLFragment(), cursor.SQLFragment())
|
query = fmt.Sprintf(query, scope.SQLFragment(), filter.SQLFragment(), cursor.SQLFragment())
|
||||||
@@ -586,9 +481,6 @@ SELECT
|
|||||||
role,
|
role,
|
||||||
source,
|
source,
|
||||||
state,
|
state,
|
||||||
'' as full_name,
|
|
||||||
NULL as email_address,
|
|
||||||
'' as organization_name,
|
|
||||||
created_at,
|
created_at,
|
||||||
updated_at
|
updated_at
|
||||||
FROM
|
FROM
|
||||||
|
|||||||
@@ -99,6 +99,7 @@ SELECT
|
|||||||
p.position,
|
p.position,
|
||||||
p.contract_start_date,
|
p.contract_start_date,
|
||||||
p.contract_end_date,
|
p.contract_end_date,
|
||||||
|
'' AS organization_name,
|
||||||
p.created_at,
|
p.created_at,
|
||||||
p.updated_at
|
p.updated_at
|
||||||
FROM
|
FROM
|
||||||
@@ -154,6 +155,7 @@ SELECT
|
|||||||
p.position,
|
p.position,
|
||||||
p.contract_start_date,
|
p.contract_start_date,
|
||||||
p.contract_end_date,
|
p.contract_end_date,
|
||||||
|
'' AS organization_name,
|
||||||
p.created_at,
|
p.created_at,
|
||||||
p.updated_at
|
p.updated_at
|
||||||
FROM
|
FROM
|
||||||
@@ -212,6 +214,7 @@ SELECT
|
|||||||
p.position,
|
p.position,
|
||||||
p.contract_start_date,
|
p.contract_start_date,
|
||||||
p.contract_end_date,
|
p.contract_end_date,
|
||||||
|
'' AS organization_name,
|
||||||
p.created_at,
|
p.created_at,
|
||||||
p.updated_at
|
p.updated_at
|
||||||
FROM
|
FROM
|
||||||
@@ -284,6 +287,7 @@ SELECT
|
|||||||
p.position,
|
p.position,
|
||||||
p.contract_start_date,
|
p.contract_start_date,
|
||||||
p.contract_end_date,
|
p.contract_end_date,
|
||||||
|
'' AS organization_name,
|
||||||
p.created_at,
|
p.created_at,
|
||||||
p.updated_at
|
p.updated_at
|
||||||
FROM profiles p
|
FROM profiles p
|
||||||
@@ -338,7 +342,6 @@ WITH profiles AS (
|
|||||||
%s
|
%s
|
||||||
AND identity_id = @identity_id
|
AND identity_id = @identity_id
|
||||||
AND %s
|
AND %s
|
||||||
AND %s
|
|
||||||
)
|
)
|
||||||
SELECT
|
SELECT
|
||||||
p.id,
|
p.id,
|
||||||
@@ -357,6 +360,8 @@ SELECT
|
|||||||
FROM profiles p
|
FROM profiles p
|
||||||
INNER JOIN identities i ON i.id = p.identity_id
|
INNER JOIN identities i ON i.id = p.identity_id
|
||||||
INNER JOIN organizations o ON o.id = p.organization_id
|
INNER JOIN organizations o ON o.id = p.organization_id
|
||||||
|
WHERE
|
||||||
|
%s
|
||||||
`
|
`
|
||||||
|
|
||||||
q = fmt.Sprintf(q, scope.SQLFragment(), filter.SQLFragment(), cursor.SQLFragment())
|
q = fmt.Sprintf(q, scope.SQLFragment(), filter.SQLFragment(), cursor.SQLFragment())
|
||||||
@@ -624,6 +629,7 @@ SELECT
|
|||||||
position,
|
position,
|
||||||
contract_start_date,
|
contract_start_date,
|
||||||
contract_end_date,
|
contract_end_date,
|
||||||
|
'' AS organization_name,
|
||||||
created_at,
|
created_at,
|
||||||
updated_at
|
updated_at
|
||||||
FROM
|
FROM
|
||||||
@@ -682,6 +688,7 @@ SELECT
|
|||||||
p.position,
|
p.position,
|
||||||
p.contract_start_date,
|
p.contract_start_date,
|
||||||
p.contract_end_date,
|
p.contract_end_date,
|
||||||
|
'' AS organization_name,
|
||||||
p.created_at,
|
p.created_at,
|
||||||
p.updated_at
|
p.updated_at
|
||||||
FROM
|
FROM
|
||||||
@@ -721,7 +728,6 @@ FROM
|
|||||||
iam_membership_profiles
|
iam_membership_profiles
|
||||||
WHERE
|
WHERE
|
||||||
%s
|
%s
|
||||||
AND %s
|
|
||||||
AND identity_id = @identity_id
|
AND identity_id = @identity_id
|
||||||
`
|
`
|
||||||
|
|
||||||
|
|||||||
@@ -1,31 +1,2 @@
|
|||||||
ALTER TABLE
|
|
||||||
iam_memberships
|
|
||||||
ADD
|
|
||||||
COLUMN profile_id REFERENCES iam_membership_profiles(id);
|
|
||||||
|
|
||||||
UPDATE
|
|
||||||
iam_memberships m
|
|
||||||
SET
|
|
||||||
profile_id = p.id
|
|
||||||
FROM
|
|
||||||
iam_membership_profiles p
|
|
||||||
WHERE
|
|
||||||
p.membership_id = m.id;
|
|
||||||
|
|
||||||
DROP INDEX authz_memberships_user_id_organization_id_key;
|
|
||||||
|
|
||||||
DROP INDEX idx_iam_memberships_identity_tenant_org;
|
|
||||||
|
|
||||||
CREATE UNIQUE INDEX idx_iam_memberships_profile_id_idx ON iam_memberships(profile_id);
|
|
||||||
|
|
||||||
ALTER TABLE
|
|
||||||
iam_memberships
|
|
||||||
ALTER COLUMN
|
|
||||||
profile_id
|
|
||||||
SET
|
|
||||||
NOT NULL,
|
|
||||||
DROP COLUMN organization_id,
|
|
||||||
DROP COLUMN identity_id;
|
|
||||||
|
|
||||||
ALTER TABLE
|
ALTER TABLE
|
||||||
iam_membership_profiles DROP COLUMN membership_id;
|
iam_membership_profiles DROP COLUMN membership_id;
|
||||||
|
|||||||
Reference in New Issue
Block a user