Skip to content

Commit

Permalink
NOISSUE - Add role name and domain name in list invitations response (#…
Browse files Browse the repository at this point in the history
…2720)

Signed-off-by: Arvindh <[email protected]>
  • Loading branch information
arvindh123 authored Feb 19, 2025
1 parent da6e3e1 commit 972fa0b
Show file tree
Hide file tree
Showing 4 changed files with 46 additions and 12 deletions.
2 changes: 1 addition & 1 deletion docker/nginx/nginx-key.conf
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ http {
add_header Access-Control-Allow-Headers '*';

# Proxy pass to domains service
location ~ ^/(domains) {
location ~ ^/(domains|invitations) {
include snippets/proxy-headers.conf;
add_header Access-Control-Expose-Headers Location;
proxy_pass http://domains:${SMQ_DOMAINS_HTTP_PORT};
Expand Down
2 changes: 1 addition & 1 deletion docker/nginx/nginx-x509.conf
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ http {
add_header Access-Control-Allow-Headers '*';

# Proxy pass to domains service
location ~ ^/(domains) {
location ~ ^/(domains|invitations) {
include snippets/proxy-headers.conf;
add_header Access-Control-Expose-Headers Location;
proxy_pass http://domains:${SMQ_DOMAINS_HTTP_PORT};
Expand Down
1 change: 1 addition & 0 deletions domains/invitations.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ type Invitation struct {
InvitedBy string `json:"invited_by"`
InviteeUserID string `json:"invitee_user_id"`
DomainID string `json:"domain_id"`
DomainName string `json:"domain_name"`
RoleID string `json:"role_id,omitempty"`
RoleName string `json:"role_name,omitempty"`
Actions []string `json:"actions,omitempty"`
Expand Down
53 changes: 43 additions & 10 deletions domains/postgres/invitations.go
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,27 @@ func (repo domainRepo) RetrieveInvitation(ctx context.Context, inviteeUserID, do
func (repo domainRepo) RetrieveAllInvitations(ctx context.Context, pm domains.InvitationPageMeta) (domains.InvitationPage, error) {
query := pageQuery(pm)

q := fmt.Sprintf("SELECT invited_by, invitee_user_id, domain_id, role_id, created_at, updated_at, confirmed_at, rejected_at FROM invitations %s LIMIT :limit OFFSET :offset;", query)
q := fmt.Sprintf(`
SELECT
i.invited_by,
i.invitee_user_id,
i.domain_id,
d."name" AS domain_name,
i.role_id,
dr."name" AS role_name,
i.created_at,
i.updated_at,
i.confirmed_at,
i.rejected_at
FROM
invitations i
LEFT JOIN domains d ON
i.domain_id = d.id
LEFT JOIN domains_roles dr ON
dr.id = i.role_id
%s
LIMIT :limit OFFSET :offset;
`, query)

rows, err := repo.db.NamedQueryContext(ctx, q, pm)
if err != nil {
Expand All @@ -72,7 +92,16 @@ func (repo domainRepo) RetrieveAllInvitations(ctx context.Context, pm domains.In
items = append(items, toInvitation(dbinv))
}

tq := fmt.Sprintf(`SELECT COUNT(*) FROM invitations %s`, query)
tq := fmt.Sprintf(`
SELECT
COUNT(*)
FROM
invitations i
LEFT JOIN domains d ON
i.domain_id = d.id
LEFT JOIN domains_roles dr ON
dr.id = i.role_id %s
`, query)

total, err := postgres.Total(ctx, repo.db, tq, pm)
if err != nil {
Expand Down Expand Up @@ -137,28 +166,28 @@ func pageQuery(pm domains.InvitationPageMeta) string {
var query []string
var emq string
if pm.DomainID != "" {
query = append(query, "domain_id = :domain_id")
query = append(query, "i.domain_id = :domain_id")
}
if pm.InviteeUserID != "" {
query = append(query, "invitee_user_id = :invitee_user_id")
query = append(query, "i.invitee_user_id = :invitee_user_id")
}
if pm.InvitedBy != "" {
query = append(query, "invited_by = :invited_by")
query = append(query, "i.invited_by = :invited_by")
}
if pm.RoleID != "" {
query = append(query, "role_id = :role_id")
query = append(query, "i.role_id = :role_id")
}
if pm.InvitedByOrUserID != "" {
query = append(query, "(invited_by = :invited_by_or_user_id OR invitee_user_id = :invited_by_or_user_id)")
query = append(query, "(i.invited_by = :invited_by_or_user_id OR i.invitee_user_id = :invited_by_or_user_id)")
}
if pm.State == domains.Accepted {
query = append(query, "confirmed_at IS NOT NULL")
query = append(query, "i.confirmed_at IS NOT NULL")
}
if pm.State == domains.Pending {
query = append(query, "confirmed_at IS NULL AND rejected_at IS NULL")
query = append(query, "i.confirmed_at IS NULL AND rejected_at IS NULL")
}
if pm.State == domains.Rejected {
query = append(query, "rejected_at IS NOT NULL")
query = append(query, "i.rejected_at IS NOT NULL")
}

if len(query) > 0 {
Expand All @@ -172,7 +201,9 @@ type dbInvitation struct {
InvitedBy string `db:"invited_by"`
InviteeUserID string `db:"invitee_user_id"`
DomainID string `db:"domain_id"`
DomainName string `db:"domain_name,omitempty"`
RoleID string `db:"role_id,omitempty"`
RoleName string `db:"role_name,omitempty"`
Relation string `db:"relation"`
CreatedAt time.Time `db:"created_at"`
UpdatedAt sql.NullTime `db:"updated_at,omitempty"`
Expand Down Expand Up @@ -220,7 +251,9 @@ func toInvitation(dbinv dbInvitation) domains.Invitation {
InvitedBy: dbinv.InvitedBy,
InviteeUserID: dbinv.InviteeUserID,
DomainID: dbinv.DomainID,
DomainName: dbinv.DomainName,
RoleID: dbinv.RoleID,
RoleName: dbinv.RoleName,
CreatedAt: dbinv.CreatedAt,
UpdatedAt: updatedAt,
ConfirmedAt: confirmedAt,
Expand Down

0 comments on commit 972fa0b

Please sign in to comment.