From 60199e3f4ec1498b735baab2c2d267f2cb5e2ed1 Mon Sep 17 00:00:00 2001 From: Abin Simon Date: Tue, 29 Mar 2022 14:23:41 +0530 Subject: [PATCH] Update sentry_account_permissions view --- internal/dao/project.go | 8 +- internal/dao/user.go | 2 +- ...ission.go => sentry_account_permission.go} | 4 +- .../000021_sentry_account_permission.up.sql | 12 +- sentry-account.sql | 130 ------------------ 5 files changed, 17 insertions(+), 139 deletions(-) rename internal/models/{sentrypermission.go => sentry_account_permission.go} (86%) delete mode 100644 sentry-account.sql diff --git a/internal/dao/project.go b/internal/dao/project.go index 079cfcf..e67f921 100644 --- a/internal/dao/project.go +++ b/internal/dao/project.go @@ -30,11 +30,11 @@ 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.SentryPermission{} + sp := []models.SentryAccountPermission{} err := db.NewSelect().Model(&sp). - Where("sentry_permission.partner_id = ?", partner). - Where("sentry_permission.organization_id = ?", org). - Where("sentry_permission.account_id = ?", account). + Where("sentry_account_permission.partner_id = ?", partner). + Where("sentry_account_permission.organization_id = ?", org). + Where("sentry_account_permission.account_id = ?", account). Scan(ctx) if err != nil { return nil, err diff --git a/internal/dao/user.go b/internal/dao/user.go index 8171647..4d02248 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.SentryPermission{} + p := []models.SentryAccountPermission{} q := db.NewSelect().Model(&p).ColumnExpr("DISTINCT account_id") q.Where("partner_id = ?", partner). diff --git a/internal/models/sentrypermission.go b/internal/models/sentry_account_permission.go similarity index 86% rename from internal/models/sentrypermission.go rename to internal/models/sentry_account_permission.go index f528cec..08f370d 100644 --- a/internal/models/sentrypermission.go +++ b/internal/models/sentry_account_permission.go @@ -7,8 +7,8 @@ import ( "github.com/uptrace/bun" ) -type SentryPermission struct { - bun.BaseModel `bun:"table:sentry_permission,alias:sentry_permission"` +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"` diff --git a/persistence/migrations/admindb/000021_sentry_account_permission.up.sql b/persistence/migrations/admindb/000021_sentry_account_permission.up.sql index d84c63f..89f1ca7 100644 --- a/persistence/migrations/admindb/000021_sentry_account_permission.up.sql +++ b/persistence/migrations/admindb/000021_sentry_account_permission.up.sql @@ -1,10 +1,12 @@ CREATE OR REPLACE VIEW sentry_account_permission AS SELECT apr.account_id, + apr.group_id, apr.project_id, apr.organization_id, apr.partner_id, - rbu.role_name, + rbu.role_name, -- could be dropped in future + rbu.role_id, rbu.is_global, rbu.scope, rbu.permission_name, @@ -13,6 +15,7 @@ SELECT FROM ( SELECT ga.account_id, + gr.group_id, uuid_nil() project_id, gr.role_id, gr.organization_id, @@ -26,6 +29,7 @@ FROM ( UNION SELECT account_id, + uuid_nil() as group_id, uuid_nil() project_id, role_id, organization_id, @@ -37,6 +41,7 @@ FROM ( UNION SELECT ga.account_id, + ga.group_id, pgr.project_id, pgr.role_id, pgr.organization_id, @@ -50,6 +55,7 @@ FROM ( UNION SELECT account_id, + uuid_nil() as group_id, project_id, role_id, organization_id, @@ -61,6 +67,7 @@ FROM ( UNION SELECT account_id, + uuid_nil() as group_id, project_id, role_id, organization_id, @@ -72,6 +79,7 @@ FROM ( UNION SELECT ga.account_id, + ga.group_id, pgnr.project_id, pgnr.role_id, pgnr.organization_id, @@ -119,4 +127,4 @@ FROM ( trash = FALSE) rr ON rr.id = rp.role_id) rbu ON apr.role_id = rbu.role_id INNER JOIN identities ON identities.id = apr.account_id WHERE - lower(identities.state) = 'active'; \ No newline at end of file + lower(identities.state) = 'active'; diff --git a/sentry-account.sql b/sentry-account.sql deleted file mode 100644 index 8aeeb9a..0000000 --- a/sentry-account.sql +++ /dev/null @@ -1,130 +0,0 @@ -DROP VIEW IF EXISTS sentry_permission; -CREATE OR REPLACE VIEW sentry_permission AS -SELECT - apr.account_id, - apr.group_id, - apr.project_id, - apr.organization_id, - apr.partner_id, - rbu.role_id, - rbu.is_global, - rbu.scope, - rbu.permission_name, - rbu.base_url, - rbu.urls -FROM ( - SELECT - ga.account_id, - gr.group_id, - uuid_nil() project_id, - gr.role_id, - gr.organization_id, - gr.partner_id - FROM - authsrv_groupaccount ga - INNER JOIN authsrv_grouprole gr ON ga.group_id = gr.group_id - WHERE - ga.trash = FALSE - AND gr.trash = FALSE - UNION - SELECT - account_id, - uuid_nil() as group_id, - uuid_nil() project_id, - role_id, - organization_id, - partner_id - FROM - authsrv_accountresourcerole - WHERE - trash = FALSE - UNION - SELECT - ga.account_id, - ga.group_id, - pgr.project_id, - pgr.role_id, - pgr.organization_id, - pgr.partner_id - FROM - authsrv_projectgrouprole pgr - INNER JOIN authsrv_groupaccount ga ON pgr.group_id = ga.group_id - WHERE - pgr.trash = FALSE - AND ga.trash = FALSE - UNION - SELECT - account_id, - uuid_nil() as group_id, - project_id, - role_id, - organization_id, - partner_id - FROM - authsrv_projectaccountresourcerole - WHERE - trash = FALSE - UNION - SELECT - account_id, - uuid_nil() as group_id, - project_id, - role_id, - organization_id, - partner_id - FROM - authsrv_projectaccountnamespacerole - WHERE - trash = FALSE - UNION - SELECT - ga.account_id, - ga.group_id, - pgnr.project_id, - pgnr.role_id, - pgnr.organization_id, - pgnr.partner_id - FROM - authsrv_projectgroupnamespacerole pgnr - INNER JOIN authsrv_groupaccount ga ON pgnr.group_id = ga.group_id - WHERE - pgnr.trash = FALSE - AND ga.trash = FALSE) AS apr - INNER JOIN ( - SELECT - rp.role_id, - rr.role_name, - rr.is_global, - rr.scope, - p.permission_name, - p.base_url, - p.urls - FROM ( - SELECT - resource_role_id AS role_id, - resource_permission_id AS permission_id - FROM - authsrv_resourcerolepermission - WHERE - trash = FALSE) rp - INNER JOIN ( - SELECT - rp.id AS permission_id, - rp.base_url, - rp.name AS permission_name, - rp.resource_urls || rp.resource_action_urls AS urls - FROM - authsrv_resourcepermission rp) p ON rp.permission_id = p.permission_id - INNER JOIN ( - SELECT - id, - name AS role_name, - is_global, - scope - FROM - authsrv_resourcerole - WHERE - trash = FALSE) rr ON rr.id = rp.role_id) rbu ON apr.role_id = rbu.role_id - INNER JOIN identities ON identities.id = apr.account_id -WHERE - lower(identities.state) = 'active';