Load identity email_address on coredata.MembershipProfile
Signed-off-by: Émile Ré <emile@getprobo.com>
This commit is contained in:
@@ -30,7 +30,9 @@ import (
|
|||||||
type (
|
type (
|
||||||
MembershipProfile struct {
|
MembershipProfile struct {
|
||||||
ID gid.GID `db:"id"`
|
ID gid.GID `db:"id"`
|
||||||
|
IdentityID gid.GID `db:"identity_id"`
|
||||||
MembershipID gid.GID `db:"membership_id"`
|
MembershipID gid.GID `db:"membership_id"`
|
||||||
|
EmailAddress mail.Addr `db:"email_address"`
|
||||||
FullName string `db:"full_name"`
|
FullName string `db:"full_name"`
|
||||||
Kind PeopleKind `db:"kind"`
|
Kind PeopleKind `db:"kind"`
|
||||||
AdditionalEmailAddresses mail.Addrs `db:"additional_email_addresses"`
|
AdditionalEmailAddresses mail.Addrs `db:"additional_email_addresses"`
|
||||||
@@ -66,21 +68,25 @@ func (p *MembershipProfile) LoadByMembershipID(
|
|||||||
) error {
|
) error {
|
||||||
q := `
|
q := `
|
||||||
SELECT
|
SELECT
|
||||||
id,
|
p.id,
|
||||||
membership_id,
|
p.identity_id,
|
||||||
full_name,
|
p.membership_id,
|
||||||
kind,
|
i.email_address,
|
||||||
additionalEmailAddresses,
|
p.full_name,
|
||||||
position,
|
p.kind,
|
||||||
contract_start_date,
|
p.additionalEmailAddresses,
|
||||||
contract_end_date,
|
p.position,
|
||||||
created_at,
|
p.contract_start_date,
|
||||||
updated_at
|
p.contract_end_date,
|
||||||
|
p.created_at,
|
||||||
|
p.updated_at
|
||||||
FROM
|
FROM
|
||||||
iam_membership_profiles
|
iam_membership_profiles p
|
||||||
|
INNER JOIN identities i
|
||||||
|
ON i.id = p.identity_id
|
||||||
WHERE
|
WHERE
|
||||||
%s
|
p.%s
|
||||||
AND membership_id = @membership_id
|
AND p.membership_id = @membership_id
|
||||||
LIMIT 1;
|
LIMIT 1;
|
||||||
`
|
`
|
||||||
|
|
||||||
@@ -116,21 +122,25 @@ func (p *MembershipProfile) LoadByID(
|
|||||||
) error {
|
) error {
|
||||||
q := `
|
q := `
|
||||||
SELECT
|
SELECT
|
||||||
id,
|
p.id,
|
||||||
membership_id,
|
p.identity_id,
|
||||||
full_name,
|
p.membership_id,
|
||||||
kind,
|
i.email_address,
|
||||||
additionalEmailAddresses,
|
p.full_name,
|
||||||
position,
|
p.kind,
|
||||||
contract_start_date,
|
p.additionalEmailAddresses,
|
||||||
contract_end_date,
|
p.position,
|
||||||
created_at,
|
p.contract_start_date,
|
||||||
updated_at
|
p.contract_end_date,
|
||||||
|
p.created_at,
|
||||||
|
p.updated_at
|
||||||
FROM
|
FROM
|
||||||
iam_membership_profiles
|
iam_membership_profiles p
|
||||||
|
INNER JOIN identities i
|
||||||
|
ON i.id = p.identity_id
|
||||||
WHERE
|
WHERE
|
||||||
%s
|
p.%s
|
||||||
AND id = @profile_id
|
AND p.id = @profile_id
|
||||||
LIMIT 1;
|
LIMIT 1;
|
||||||
`
|
`
|
||||||
|
|
||||||
@@ -166,21 +176,25 @@ func (p *MembershipProfiles) LoadByIDs(
|
|||||||
) error {
|
) error {
|
||||||
q := `
|
q := `
|
||||||
SELECT
|
SELECT
|
||||||
id,
|
p.id,
|
||||||
membership_id,
|
p.identity_id,
|
||||||
full_name,
|
p.membership_id,
|
||||||
kind,
|
i.email_address,
|
||||||
additionalEmailAddresses,
|
p.full_name,
|
||||||
position,
|
p.kind,
|
||||||
contract_start_date,
|
p.additionalEmailAddresses,
|
||||||
contract_end_date,
|
p.position,
|
||||||
created_at,
|
p.contract_start_date,
|
||||||
updated_at
|
p.contract_end_date,
|
||||||
|
p.created_at,
|
||||||
|
p.updated_at
|
||||||
FROM
|
FROM
|
||||||
iam_membership_profiles
|
iam_membership_profiles p
|
||||||
|
INNER JOIN identities i
|
||||||
|
ON i.id = p.identity_id
|
||||||
WHERE
|
WHERE
|
||||||
%s
|
p.%s
|
||||||
AND id = ANY(@profile_ids)
|
AND p.id = ANY(@profile_ids)
|
||||||
`
|
`
|
||||||
|
|
||||||
q = fmt.Sprintf(q, scope.SQLFragment())
|
q = fmt.Sprintf(q, scope.SQLFragment())
|
||||||
@@ -213,7 +227,9 @@ func (p *MembershipProfiles) LoadByMeetingID(
|
|||||||
WITH attendees AS (
|
WITH attendees AS (
|
||||||
SELECT
|
SELECT
|
||||||
p.id,
|
p.id,
|
||||||
|
p.identity_id,
|
||||||
p.membership_id,
|
p.membership_id,
|
||||||
|
i.email_address,
|
||||||
p.full_name,
|
p.full_name,
|
||||||
p.kind,
|
p.kind,
|
||||||
p.additionalEmailAddresses,
|
p.additionalEmailAddresses,
|
||||||
@@ -225,6 +241,8 @@ WITH attendees AS (
|
|||||||
ma.created_at AS attendee_created_at
|
ma.created_at AS attendee_created_at
|
||||||
FROM
|
FROM
|
||||||
iam_membership_profiles p
|
iam_membership_profiles p
|
||||||
|
INNER JOIN identities i
|
||||||
|
ON i.id = p.identity_id
|
||||||
INNER JOIN
|
INNER JOIN
|
||||||
meeting_attendees ma ON p.id = ma.attendee_profile_id
|
meeting_attendees ma ON p.id = ma.attendee_profile_id
|
||||||
WHERE
|
WHERE
|
||||||
@@ -232,8 +250,10 @@ WITH attendees AS (
|
|||||||
)
|
)
|
||||||
SELECT
|
SELECT
|
||||||
id,
|
id,
|
||||||
organization_id,
|
identity_id,
|
||||||
|
membership_id,
|
||||||
kind,
|
kind,
|
||||||
|
email_address,
|
||||||
full_name,
|
full_name,
|
||||||
additional_email_addresses,
|
additional_email_addresses,
|
||||||
position,
|
position,
|
||||||
@@ -287,19 +307,23 @@ WITH signatories AS (
|
|||||||
signed_by
|
signed_by
|
||||||
)
|
)
|
||||||
SELECT
|
SELECT
|
||||||
id,
|
p.id,
|
||||||
organization_id,
|
p.identity_id,
|
||||||
kind,
|
p.membership_id,
|
||||||
full_name,
|
p.kind,
|
||||||
additional_email_addresses,
|
p.full_name,
|
||||||
position,
|
i.email_address,
|
||||||
contract_start_date,
|
p.additional_email_addresses,
|
||||||
contract_end_date,
|
p.position,
|
||||||
created_at,
|
p.contract_start_date,
|
||||||
updated_at
|
p.contract_end_date,
|
||||||
|
p.created_at,
|
||||||
|
p.updated_at
|
||||||
FROM
|
FROM
|
||||||
iam_membership_profiles
|
iam_membership_profiles p
|
||||||
INNER JOIN signatories ON iam_membership_profiles.id = signatories.signed_by_profile_id
|
INNER JOIN identities i
|
||||||
|
ON i.id = p.identity_id
|
||||||
|
INNER JOIN signatories ON p.id = signatories.signed_by_profile_id
|
||||||
`
|
`
|
||||||
|
|
||||||
q = fmt.Sprintf(q, scope.SQLFragment())
|
q = fmt.Sprintf(q, scope.SQLFragment())
|
||||||
@@ -328,6 +352,7 @@ INSERT INTO
|
|||||||
iam_membership_profiles (
|
iam_membership_profiles (
|
||||||
tenant_id,
|
tenant_id,
|
||||||
id,
|
id,
|
||||||
|
identity_id,
|
||||||
membership_id,
|
membership_id,
|
||||||
full_name,
|
full_name,
|
||||||
kind,
|
kind,
|
||||||
@@ -341,6 +366,7 @@ INSERT INTO
|
|||||||
VALUES (
|
VALUES (
|
||||||
@tenant_id,
|
@tenant_id,
|
||||||
@id,
|
@id,
|
||||||
|
@identity_id,
|
||||||
@membership_id,
|
@membership_id,
|
||||||
@full_name,
|
@full_name,
|
||||||
@kind,
|
@kind,
|
||||||
@@ -356,6 +382,7 @@ VALUES (
|
|||||||
args := pgx.StrictNamedArgs{
|
args := pgx.StrictNamedArgs{
|
||||||
"tenant_id": p.ID.TenantID().String(),
|
"tenant_id": p.ID.TenantID().String(),
|
||||||
"id": p.ID,
|
"id": p.ID,
|
||||||
|
"identity_id": p.IdentityID,
|
||||||
"membership_id": p.MembershipID,
|
"membership_id": p.MembershipID,
|
||||||
"full_name": p.FullName,
|
"full_name": p.FullName,
|
||||||
"kind": p.Kind,
|
"kind": p.Kind,
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
-- 1. Add peoples column onto profiles
|
-- 1. Add peoples column onto profiles
|
||||||
ALTER TABLE
|
ALTER TABLE
|
||||||
iam_membership_profiles
|
iam_membership_profiles
|
||||||
|
ADD
|
||||||
|
COLUMN identity_id REFERENCES identities(id) NOT NULL,
|
||||||
ADD
|
ADD
|
||||||
COLUMN additional_email_addresses CITEXT [] NOT NULL,
|
COLUMN additional_email_addresses CITEXT [] NOT NULL,
|
||||||
ADD
|
ADD
|
||||||
@@ -12,6 +14,15 @@ ADD
|
|||||||
ADD
|
ADD
|
||||||
COLUMN position TEXT;
|
COLUMN position TEXT;
|
||||||
|
|
||||||
|
UPDATE
|
||||||
|
iam_membership_profiles mp
|
||||||
|
SET
|
||||||
|
identity_id = m.identity_id
|
||||||
|
FROM
|
||||||
|
iam_memberships m
|
||||||
|
WHERE
|
||||||
|
m.id = mp.membership_id;
|
||||||
|
|
||||||
-- 2. Add profile references to all table referencing peoples
|
-- 2. Add profile references to all table referencing peoples
|
||||||
-- was owner_id, NOT NULL
|
-- was owner_id, NOT NULL
|
||||||
ALTER TABLE
|
ALTER TABLE
|
||||||
|
|||||||
@@ -267,6 +267,7 @@ func (s *AccountService) AcceptInvitation(
|
|||||||
|
|
||||||
profile := &coredata.MembershipProfile{
|
profile := &coredata.MembershipProfile{
|
||||||
ID: gid.New(tenantID, coredata.MembershipProfileEntityType),
|
ID: gid.New(tenantID, coredata.MembershipProfileEntityType),
|
||||||
|
IdentityID: identity.ID,
|
||||||
MembershipID: membership.ID,
|
MembershipID: membership.ID,
|
||||||
FullName: identity.FullName,
|
FullName: identity.FullName,
|
||||||
CreatedAt: now,
|
CreatedAt: now,
|
||||||
|
|||||||
@@ -667,6 +667,7 @@ func (s *OrganizationService) CreateOrganization(
|
|||||||
|
|
||||||
profile := &coredata.MembershipProfile{
|
profile := &coredata.MembershipProfile{
|
||||||
ID: gid.New(tenantID, coredata.MembershipProfileEntityType),
|
ID: gid.New(tenantID, coredata.MembershipProfileEntityType),
|
||||||
|
IdentityID: identity.ID,
|
||||||
MembershipID: membership.ID,
|
MembershipID: membership.ID,
|
||||||
FullName: identity.FullName,
|
FullName: identity.FullName,
|
||||||
CreatedAt: now,
|
CreatedAt: now,
|
||||||
|
|||||||
@@ -318,6 +318,7 @@ func (s *Service) HandleAssertion(
|
|||||||
|
|
||||||
membershipProfile := &coredata.MembershipProfile{
|
membershipProfile := &coredata.MembershipProfile{
|
||||||
ID: gid.New(membership.ID.TenantID(), coredata.MembershipProfileEntityType),
|
ID: gid.New(membership.ID.TenantID(), coredata.MembershipProfileEntityType),
|
||||||
|
IdentityID: identity.ID,
|
||||||
MembershipID: membership.ID,
|
MembershipID: membership.ID,
|
||||||
FullName: fullname,
|
FullName: fullname,
|
||||||
CreatedAt: now,
|
CreatedAt: now,
|
||||||
|
|||||||
@@ -197,6 +197,7 @@ func (s *Service) CreateUser(
|
|||||||
// Create membership profile
|
// Create membership profile
|
||||||
membershipProfile := &coredata.MembershipProfile{
|
membershipProfile := &coredata.MembershipProfile{
|
||||||
ID: gid.New(membership.ID.TenantID(), coredata.MembershipProfileEntityType),
|
ID: gid.New(membership.ID.TenantID(), coredata.MembershipProfileEntityType),
|
||||||
|
IdentityID: identity.ID,
|
||||||
MembershipID: membership.ID,
|
MembershipID: membership.ID,
|
||||||
FullName: fullName,
|
FullName: fullName,
|
||||||
CreatedAt: now,
|
CreatedAt: now,
|
||||||
|
|||||||
@@ -557,8 +557,7 @@ func (s *DocumentService) SendSigningNotifications(
|
|||||||
|
|
||||||
email := coredata.NewEmail(
|
email := coredata.NewEmail(
|
||||||
signatory.FullName,
|
signatory.FullName,
|
||||||
// FIXME: load email with profile
|
signatory.EmailAddress,
|
||||||
"contact@getprobo.com",
|
|
||||||
subject,
|
subject,
|
||||||
textBody,
|
textBody,
|
||||||
htmlBody,
|
htmlBody,
|
||||||
|
|||||||
Reference in New Issue
Block a user