From 94bb70cb6d2eb5fa007fa948a6224460e47c33f5 Mon Sep 17 00:00:00 2001 From: Abin Simon Date: Thu, 31 Mar 2022 13:26:51 +0530 Subject: [PATCH] Merge sentry view table models --- internal/dao/project.go | 2 +- internal/dao/user.go | 2 +- internal/models/accountpermission.go | 14 +++++++----- internal/models/sentry_account_permission.go | 24 -------------------- pkg/service/account_permission.go | 2 +- pkg/service/user.go | 3 +-- pkg/service/user_test.go | 8 +++---- 7 files changed, 16 insertions(+), 39 deletions(-) delete mode 100644 internal/models/sentry_account_permission.go diff --git a/internal/dao/project.go b/internal/dao/project.go index 2d4e660..40c8df6 100644 --- a/internal/dao/project.go +++ b/internal/dao/project.go @@ -30,7 +30,7 @@ func GetProjectOrganization(ctx context.Context, db bun.IDB, id uuid.UUID) (stri func GetFileteredProjects(ctx context.Context, db bun.IDB, account, partner, org uuid.UUID) ([]models.Project, error) { ids := []uuid.UUID{} - sp := []models.SentryAccountPermission{} + sp := []models.AccountPermission{} err := db.NewSelect().Model(&sp). ColumnExpr("distinct account_id, project_id"). Where("sentry_account_permission.partner_id = ?", partner). diff --git a/internal/dao/user.go b/internal/dao/user.go index 4d02248..211ef75 100644 --- a/internal/dao/user.go +++ b/internal/dao/user.go @@ -73,7 +73,7 @@ type userProjectnamesaceRole struct { // TODO: find a better name for the function func GetQueryFilteredUsers(ctx context.Context, db bun.IDB, partner, org, group, role uuid.UUID, projects []uuid.UUID) ([]uuid.UUID, error) { - p := []models.SentryAccountPermission{} + p := []models.AccountPermission{} q := db.NewSelect().Model(&p).ColumnExpr("DISTINCT account_id") q.Where("partner_id = ?", partner). diff --git a/internal/models/accountpermission.go b/internal/models/accountpermission.go index f7a7406..b97476f 100644 --- a/internal/models/accountpermission.go +++ b/internal/models/accountpermission.go @@ -11,13 +11,15 @@ type AccountPermission struct { bun.BaseModel `bun:"table:sentry_account_permission,alias:sap"` AccountId uuid.UUID `bun:"account_id,type:uuid"` - ProjecttId uuid.UUID `bun:"project_id"` + ProjectId uuid.UUID `bun:"project_id,type:uuid"` + GroupId uuid.UUID `bun:"group_id,type:uuid"` + RoleId uuid.UUID `bun:"role_id,type:uuid"` + RoleName string `bun:"role_name,type:string"` OrganizationId uuid.UUID `bun:"organization_id,type:uuid"` PartnerId uuid.UUID `bun:"partner_id,type:uuid"` - RoleName string `bun:"role_name"` - IsGlobal bool `bun:"is_global"` - Scope string `bun:"scope"` - PermissionName string `bun:"permission_name"` - BaseUrl string `bun:"base_url"` + IsGlobal bool `bun:"is_global,notnull,default:true"` // does not matter + Scope string `bun:"scope,notnull"` + PermissionName string `bun:"permission_name,type:string"` + BaseUrl string `bun:"base_url,type:string"` Urls json.RawMessage `bun:"urls,type:jsonb"` } diff --git a/internal/models/sentry_account_permission.go b/internal/models/sentry_account_permission.go deleted file mode 100644 index 08f370d..0000000 --- a/internal/models/sentry_account_permission.go +++ /dev/null @@ -1,24 +0,0 @@ -package models - -import ( - "encoding/json" - - "github.com/google/uuid" - "github.com/uptrace/bun" -) - -type SentryAccountPermission struct { - bun.BaseModel `bun:"table:sentry_account_permission,alias:sentry_account_permission"` - - AccountId uuid.UUID `bun:"account_id,type:uuid"` - ProjectId uuid.UUID `bun:"project_id,type:uuid"` - GroupId uuid.UUID `bun:"group_id,type:uuid"` - RoleId uuid.UUID `bun:"role_id,type:uuid"` - OrganizationId uuid.UUID `bun:"organization_id,type:uuid"` - PartnerId uuid.UUID `bun:"partner_id,type:uuid"` - IsGlobal bool `bun:"is_global,notnull,default:true"` // does not matter - Scope string `bun:"scope,notnull"` - Permission string `bun:"permission_name,type:string"` - BaseUrl string `bun:"base_url,type:string"` - Urls json.RawMessage `bun:"urls,type:jsonb"` -} diff --git a/pkg/service/account_permission.go b/pkg/service/account_permission.go index cfedd76..fb602ce 100644 --- a/pkg/service/account_permission.go +++ b/pkg/service/account_permission.go @@ -192,7 +192,7 @@ func prepareAccountPermissionResponse(aps models.AccountPermission) sentry.Accou } return sentry.AccountPermission{ AccountID: aps.AccountId.String(), - ProjectID: aps.ProjecttId.String(), + ProjectID: aps.ProjectId.String(), OrganizationID: aps.OrganizationId.String(), PartnerID: aps.PartnerId.String(), RoleName: aps.RoleName, diff --git a/pkg/service/user.go b/pkg/service/user.go index 5d4a719..a78d167 100644 --- a/pkg/service/user.go +++ b/pkg/service/user.go @@ -427,7 +427,6 @@ func (s *userService) GetUserInfo(ctx context.Context, user *userv3.User) (*user } permissions = append( permissions, - // TODO: rename permissions to permission &userv3.Permission{ Project: p.Project, Namespace: p.Namespace, @@ -661,7 +660,7 @@ func (s *userService) RetrieveCliConfig(ctx context.Context, req *userrpcv3.ApiK } // fetch the metadata information required to populate cli config var proj models.Project - _, err = dao.GetByID(ctx, s.db, ap.ProjecttId, &proj) + _, err = dao.GetByID(ctx, s.db, ap.ProjectId, &proj) if err != nil { return nil, err } diff --git a/pkg/service/user_test.go b/pkg/service/user_test.go index 4f2888f..d99540c 100644 --- a/pkg/service/user_test.go +++ b/pkg/service/user_test.go @@ -409,7 +409,7 @@ func TestUserList(t *testing.T) { WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(puuid)) mock.ExpectQuery(`SELECT "organization"."id" FROM "authsrv_organization" AS "organization"`). WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(ouuid)) - mock.ExpectQuery(`SELECT DISTINCT account_id FROM "sentry_account_permission" WHERE .partner_id = '` + puuid + `'. AND .organization_id = '` + ouuid + `'`). + mock.ExpectQuery(`SELECT DISTINCT account_id FROM "sentry_account_permission" AS "sap" WHERE .partner_id = '` + puuid + `'. AND .organization_id = '` + ouuid + `'`). WithArgs().WillReturnRows(sqlmock.NewRows([]string{"account_id"}).AddRow(uuuid1).AddRow(uuuid2)) mock.ExpectQuery(`SELECT "identities"."id", .*WHERE .id IN .'` + uuuid1 + `', '` + uuuid2 + `'.. LIMIT 10`). WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id", "traits"}). @@ -442,7 +442,7 @@ func TestUserList(t *testing.T) { t.Fatal("could not list users:", err) } if userlist.Metadata.Count != 2 { - t.Errorf("incorrect number of users returned, expected 2; got %v", userlist.Metadata.Count) + t.Fatalf("incorrect number of users returned, expected 2; got %v", userlist.Metadata.Count) } if userlist.Items[0].Metadata.Name != "johndoe@provider.com" || userlist.Items[1].Metadata.Name != "johndoe@provider.com" { t.Errorf("incorrect user names returned when listing; expected '%v' and '%v'; got '%v' and '%v'", "johndoe@provider.com", "johndoe@provider.com", userlist.Items[0].Metadata.Name, userlist.Items[1].Metadata.Name) @@ -480,7 +480,7 @@ func TestUserFiletered(t *testing.T) { WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(puuid)) mock.ExpectQuery(`SELECT "organization"."id" FROM "authsrv_organization" AS "organization"`). WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(ouuid)) - mock.ExpectQuery(`SELECT DISTINCT account_id FROM "sentry_account_permission" WHERE .partner_id = '` + puuid + `'. AND .organization_id = '` + ouuid + `'`). + mock.ExpectQuery(`SELECT DISTINCT account_id FROM "sentry_account_permission" AS "sap" WHERE .partner_id = '` + puuid + `'. AND .organization_id = '` + ouuid + `'`). WithArgs().WillReturnRows(sqlmock.NewRows([]string{"account_id"}).AddRow(uuuid1).AddRow(uuuid2)) mock.ExpectQuery(`SELECT "identities"."id", .*WHERE .id IN .'` + uuuid1 + `', '` + uuuid2 + `'.. AND .traits ->> 'email' ILIKE '%filter-query%'. OR .traits ->> 'first_name' ILIKE '%filter-query%'. OR .traits ->> 'last_name' ILIKE '%filter-query%'. ORDER BY "traits ->> 'email' asc" LIMIT 50 OFFSET 20`). WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id", "traits"}). @@ -513,7 +513,7 @@ func TestUserFiletered(t *testing.T) { t.Fatal("could not list users:", err) } if userlist.Metadata.Count != 2 { - t.Errorf("incorrect number of users returned, expected 2; got %v", userlist.Metadata.Count) + t.Fatalf("incorrect number of users returned, expected 2; got %v", userlist.Metadata.Count) } if userlist.Items[0].Metadata.Name != "johndoe@provider.com" {