From feeaad777c20f4fcecb3594a16f645cf1e62e3df Mon Sep 17 00:00:00 2001 From: Sacha Al Himdani Date: Tue, 14 Oct 2025 09:55:01 +0200 Subject: [PATCH] Fix style of invitation and membership files Signed-off-by: Sacha Al Himdani --- pkg/coredata/invitation.go | 181 +++++++++++++++++++++--------------- pkg/coredata/membership.go | 182 ++++++++++++++++++++++--------------- 2 files changed, 217 insertions(+), 146 deletions(-) diff --git a/pkg/coredata/invitation.go b/pkg/coredata/invitation.go index 821cbe7a6..82d1e5a7a 100644 --- a/pkg/coredata/invitation.go +++ b/pkg/coredata/invitation.go @@ -51,12 +51,12 @@ type ( } ErrInvitationNotFound struct { - Token string + ID string } ) func (e ErrInvitationNotFound) Error() string { - return fmt.Sprintf("invitation not found: %s", e.Token) + return fmt.Sprintf("invitation not found: %s", e.ID) } func (i Invitation) CursorKey(orderBy InvitationOrderField) page.CursorKey { @@ -84,12 +84,28 @@ func (i Invitation) CursorKey(orderBy InvitationOrderField) page.CursorKey { func (i *Invitation) Create(ctx context.Context, conn pg.Conn, scope Scoper) error { query := ` - INSERT INTO authz_invitations ( - tenant_id, id, organization_id, email, full_name, role, expires_at, created_at - ) VALUES ( - @tenant_id, @id, @organization_id, @email, @full_name, @role, @expires_at, @created_at - ) - ` +INSERT INTO + authz_invitations ( + tenant_id, + id, + organization_id, + email, + full_name, + role, + expires_at, + created_at + ) +VALUES ( + @tenant_id, + @id, + @organization_id, + @email, + @full_name, + @role, + @expires_at, + @created_at +); +` args := pgx.StrictNamedArgs{ "tenant_id": scope.GetTenantID(), @@ -104,7 +120,7 @@ func (i *Invitation) Create(ctx context.Context, conn pg.Conn, scope Scoper) err _, err := conn.Exec(ctx, query, args) if err != nil { - return fmt.Errorf("failed to create invitation: %w", err) + return fmt.Errorf("cannot create invitation: %w", err) } return nil @@ -117,23 +133,26 @@ func (i *Invitation) LoadByID( id gid.GID, ) error { query := ` - SELECT - id, - organization_id, - email, - full_name, - role, - CASE - WHEN accepted_at IS NOT NULL THEN 'ACCEPTED' - WHEN expires_at < NOW() THEN 'EXPIRED' - ELSE 'PENDING' - END as status, - expires_at, - accepted_at, - created_at - FROM authz_invitations - WHERE id = @id AND %s - ` +SELECT + id, + organization_id, + email, + full_name, + role, + CASE + WHEN accepted_at IS NOT NULL THEN 'ACCEPTED' + WHEN expires_at < NOW() THEN 'EXPIRED' + ELSE 'PENDING' + END as status, + expires_at, + accepted_at, + created_at +FROM + authz_invitations +WHERE + id = @id + AND %s +` query = fmt.Sprintf(query, scope.SQLFragment()) @@ -150,7 +169,7 @@ func (i *Invitation) LoadByID( invitation, err := pgx.CollectExactlyOneRow(rows, pgx.RowToStructByName[Invitation]) if err != nil { if errors.Is(err, pgx.ErrNoRows) { - return ErrInvitationNotFound{Token: id.String()} + return ErrInvitationNotFound{ID: id.String()} } return fmt.Errorf("cannot collect invitation: %w", err) } @@ -161,10 +180,14 @@ func (i *Invitation) LoadByID( func (i *Invitation) Update(ctx context.Context, conn pg.Conn, scope Scoper) error { query := ` - UPDATE authz_invitations - SET accepted_at = @accepted_at - WHERE id = @id AND %s - ` +UPDATE + authz_invitations +SET + accepted_at = @accepted_at +WHERE + id = @id + AND %s +` query = fmt.Sprintf(query, scope.SQLFragment()) @@ -176,11 +199,11 @@ func (i *Invitation) Update(ctx context.Context, conn pg.Conn, scope Scoper) err result, err := conn.Exec(ctx, query, args) if err != nil { - return fmt.Errorf("failed to update invitation: %w", err) + return fmt.Errorf("cannot update invitation: %w", err) } if result.RowsAffected() == 0 { - return ErrInvitationNotFound{Token: i.ID.String()} + return ErrInvitationNotFound{ID: i.ID.String()} } return nil @@ -188,9 +211,12 @@ func (i *Invitation) Update(ctx context.Context, conn pg.Conn, scope Scoper) err func (i *Invitation) Delete(ctx context.Context, conn pg.Conn, scope Scoper) error { query := ` - DELETE FROM authz_invitations - WHERE id = @id AND %s - ` +DELETE FROM + authz_invitations +WHERE + id = @id + AND %s +` query = fmt.Sprintf(query, scope.SQLFragment()) @@ -201,11 +227,11 @@ func (i *Invitation) Delete(ctx context.Context, conn pg.Conn, scope Scoper) err result, err := conn.Exec(ctx, query, args) if err != nil { - return fmt.Errorf("failed to delete invitation: %w", err) + return fmt.Errorf("cannot delete invitation: %w", err) } if result.RowsAffected() == 0 { - return ErrInvitationNotFound{Token: i.ID.String()} + return ErrInvitationNotFound{ID: i.ID.String()} } return nil @@ -221,25 +247,27 @@ func (i *Invitations) LoadByEmail( filter *InvitationFilter, ) error { query := ` - SELECT - id, - organization_id, - email, - full_name, - role, - CASE - WHEN accepted_at IS NOT NULL THEN 'ACCEPTED' - WHEN expires_at < NOW() THEN 'EXPIRED' - ELSE 'PENDING' - END as status, - expires_at, - accepted_at, - created_at - FROM authz_invitations - WHERE email = @email - AND %s - AND %s - ` +SELECT + id, + organization_id, + email, + full_name, + role, + CASE + WHEN accepted_at IS NOT NULL THEN 'ACCEPTED' + WHEN expires_at < NOW() THEN 'EXPIRED' + ELSE 'PENDING' + END as status, + expires_at, + accepted_at, + created_at +FROM + authz_invitations +WHERE + email = @email + AND %s + AND %s +` query = fmt.Sprintf(query, filter.SQLFragment(), cursor.SQLFragment()) @@ -271,24 +299,27 @@ func (i *Invitations) LoadByOrganizationID( cursor *page.Cursor[InvitationOrderField], ) error { query := ` - SELECT - id, - organization_id, - email, - full_name, - role, - CASE - WHEN accepted_at IS NOT NULL THEN 'ACCEPTED' - WHEN expires_at < NOW() THEN 'EXPIRED' - ELSE 'PENDING' - END as status, - expires_at, - accepted_at, - created_at - FROM authz_invitations - WHERE organization_id = @organization_id AND %s - AND %s - ` +SELECT + id, + organization_id, + email, + full_name, + role, + CASE + WHEN accepted_at IS NOT NULL THEN 'ACCEPTED' + WHEN expires_at < NOW() THEN 'EXPIRED' + ELSE 'PENDING' + END as status, + expires_at, + accepted_at, + created_at +FROM + authz_invitations +WHERE + organization_id = @organization_id + AND %s + AND %s +` query = fmt.Sprintf(query, scope.SQLFragment(), cursor.SQLFragment()) diff --git a/pkg/coredata/membership.go b/pkg/coredata/membership.go index 295e1210f..012af37e9 100644 --- a/pkg/coredata/membership.go +++ b/pkg/coredata/membership.go @@ -78,9 +78,26 @@ func (m Membership) CursorKey(orderBy MembershipOrderField) page.CursorKey { func (m *Membership) Create(ctx context.Context, conn pg.Conn, scope Scoper) error { query := ` - INSERT INTO authz_memberships (tenant_id, id, user_id, organization_id, role, created_at, updated_at) - VALUES (@tenant_id, @id, @user_id, @organization_id, @role, @created_at, @updated_at) - ` +INSERT INTO + authz_memberships ( + tenant_id, + id, + user_id, + organization_id, + role, + created_at, + updated_at + ) +VALUES ( + @tenant_id, + @id, + @user_id, + @organization_id, + @role, + @created_at, + @updated_at +); +` args := pgx.StrictNamedArgs{ "tenant_id": scope.GetTenantID(), @@ -98,11 +115,11 @@ func (m *Membership) Create(ctx context.Context, conn pg.Conn, scope Scoper) err if errors.As(err, &pgErr) && pgErr.Code == "23505" { return ErrMembershipAlreadyExists{UserID: m.UserID, OrgID: m.OrganizationID} } - return fmt.Errorf("failed to create membership: %w", err) + return fmt.Errorf("cannot create membership: %w", err) } if result.RowsAffected() == 0 { - return fmt.Errorf("failed to create membership: organization %s not found", m.OrganizationID) + return fmt.Errorf("cannot create membership: organization %s not found", m.OrganizationID) } return nil @@ -115,19 +132,23 @@ func (m *Membership) LoadByID( membershipID gid.GID, ) error { query := ` - SELECT - m.id, - m.user_id, - m.organization_id, - m.role, - u.fullname as full_name, - u.email_address, - m.created_at, - m.updated_at - FROM authz_memberships m - JOIN users u ON m.user_id = u.id - WHERE m.id = @membership_id AND %s - ` +SELECT + m.id, + m.user_id, + m.organization_id, + m.role, + u.fullname as full_name, + u.email_address, + m.created_at, + m.updated_at +FROM + authz_memberships m +JOIN + users u ON m.user_id = u.id +WHERE + m.id = @membership_id + AND %s +` query = fmt.Sprintf(query, scope.SQLFragment()) @@ -161,19 +182,24 @@ func (m *Membership) LoadByUserAndOrg( orgID gid.GID, ) error { query := ` - SELECT - m.id, - m.user_id, - m.organization_id, - m.role, - u.fullname as full_name, - u.email_address, - m.created_at, - m.updated_at - FROM authz_memberships m - JOIN users u ON m.user_id = u.id - WHERE m.user_id = @user_id AND m.organization_id = @organization_id AND %s - ` +SELECT + m.id, + m.user_id, + m.organization_id, + m.role, + u.fullname as full_name, + u.email_address, + m.created_at, + m.updated_at +FROM + authz_memberships m +JOIN + users u ON m.user_id = u.id +WHERE + m.user_id = @user_id + AND m.organization_id = @organization_id + AND %s +` query = fmt.Sprintf(query, scope.SQLFragment()) @@ -202,10 +228,15 @@ func (m *Membership) LoadByUserAndOrg( func (m *Membership) Update(ctx context.Context, conn pg.Conn, scope Scoper) error { query := ` - UPDATE authz_memberships - SET role = @role, updated_at = @updated_at - WHERE id = @id AND %s - ` +UPDATE + authz_memberships +SET + role = @role, + updated_at = @updated_at +WHERE + id = @id + AND %s +` query = fmt.Sprintf(query, scope.SQLFragment()) @@ -218,7 +249,7 @@ func (m *Membership) Update(ctx context.Context, conn pg.Conn, scope Scoper) err result, err := conn.Exec(ctx, query, args) if err != nil { - return fmt.Errorf("failed to update membership: %w", err) + return fmt.Errorf("cannot update membership: %w", err) } if result.RowsAffected() == 0 { @@ -230,9 +261,12 @@ func (m *Membership) Update(ctx context.Context, conn pg.Conn, scope Scoper) err func (m *Membership) Delete(ctx context.Context, conn pg.Conn, scope Scoper) error { query := ` - DELETE FROM authz_memberships - WHERE id = @id AND %s - ` +DELETE FROM + authz_memberships +WHERE + id = @id + AND %s +` query = fmt.Sprintf(query, scope.SQLFragment()) @@ -243,7 +277,7 @@ func (m *Membership) Delete(ctx context.Context, conn pg.Conn, scope Scoper) err result, err := conn.Exec(ctx, query, args) if err != nil { - return fmt.Errorf("failed to delete membership: %w", err) + return fmt.Errorf("cannot delete membership: %w", err) } if result.RowsAffected() == 0 { @@ -261,23 +295,24 @@ func (m *Memberships) LoadByUserID( ) error { query := ` SELECT - m.id, - m.user_id, - m.organization_id, - m.role, - u.fullname as full_name, - u.email_address, - m.created_at, - m.updated_at + m.id, + m.user_id, + m.organization_id, + m.role, + u.fullname as full_name, + u.email_address, + m.created_at, + m.updated_at FROM - authz_memberships m -JOIN users u ON m.user_id = u.id + authz_memberships m +JOIN + users u ON m.user_id = u.id WHERE - m.user_id = @user_id - AND %s + m.user_id = @user_id + AND %s ORDER BY - m.created_at DESC - ` + m.created_at DESC +` query = fmt.Sprintf(query, scope.SQLFragment()) @@ -309,21 +344,22 @@ func (m *Memberships) LoadByOrganizationID( ) error { query := ` SELECT - m.id, - m.user_id, - m.organization_id, - m.role, - u.fullname as full_name, - u.email_address, - m.created_at, - m.updated_at + m.id, + m.user_id, + m.organization_id, + m.role, + u.fullname as full_name, + u.email_address, + m.created_at, + m.updated_at FROM - authz_memberships m -JOIN users u ON m.user_id = u.id + authz_memberships m +JOIN + users u ON m.user_id = u.id WHERE - m.organization_id = @organization_id - AND %s - AND %s + m.organization_id = @organization_id + AND %s + AND %s ` query = fmt.Sprintf(query, scope.SQLFragment(), cursor.SQLFragment()) @@ -355,10 +391,14 @@ func (m *Memberships) CountByOrganizationID( organizationID gid.GID, ) (int, error) { query := ` - SELECT COUNT(*) - FROM authz_memberships - WHERE organization_id = @organization_id AND %s - ` +SELECT + COUNT(*) +FROM + authz_memberships +WHERE + organization_id = @organization_id + AND %s +` query = fmt.Sprintf(query, scope.SQLFragment()) args := pgx.StrictNamedArgs{ "organization_id": organizationID,