Skip to content

Commit e94e7c9

Browse files
committed
feat: implement dbauthz and dbmem for new query
1 parent 2711ded commit e94e7c9

File tree

7 files changed

+150
-1
lines changed

7 files changed

+150
-1
lines changed

coderd/database/dbauthz/dbauthz.go

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1985,6 +1985,35 @@ func (q *querier) GetOrganizationIDsByMemberIDs(ctx context.Context, ids []uuid.
19851985
return fetchWithPostFilter(q.auth, policy.ActionRead, q.db.GetOrganizationIDsByMemberIDs)(ctx, ids)
19861986
}
19871987

1988+
func (q *querier) GetOrganizationResourceCountByID(ctx context.Context, organizationID uuid.UUID) (database.GetOrganizationResourceCountByIDRow, error) {
1989+
// Can read org members
1990+
if err := q.authorizeContext(ctx, policy.ActionRead, rbac.ResourceOrganizationMember.InOrg(organizationID)); err != nil {
1991+
return database.GetOrganizationResourceCountByIDRow{}, err
1992+
}
1993+
1994+
// Can read org workspaces
1995+
if err := q.authorizeContext(ctx, policy.ActionRead, rbac.ResourceWorkspace.InOrg(organizationID)); err != nil {
1996+
return database.GetOrganizationResourceCountByIDRow{}, err
1997+
}
1998+
1999+
// Can read org groups
2000+
if err := q.authorizeContext(ctx, policy.ActionRead, rbac.ResourceGroup.InOrg(organizationID)); err != nil {
2001+
return database.GetOrganizationResourceCountByIDRow{}, err
2002+
}
2003+
2004+
// Can read org templates
2005+
if err := q.authorizeContext(ctx, policy.ActionRead, rbac.ResourceTemplate.InOrg(organizationID)); err != nil {
2006+
return database.GetOrganizationResourceCountByIDRow{}, err
2007+
}
2008+
2009+
// Can read org provisioner jobs
2010+
if err := q.authorizeContext(ctx, policy.ActionRead, rbac.ResourceProvisionerJobs.InOrg(organizationID)); err != nil {
2011+
return database.GetOrganizationResourceCountByIDRow{}, err
2012+
}
2013+
2014+
return q.db.GetOrganizationResourceCountByID(ctx, organizationID)
2015+
}
2016+
19882017
func (q *querier) GetOrganizations(ctx context.Context, args database.GetOrganizationsParams) ([]database.Organization, error) {
19892018
fetch := func(ctx context.Context, _ interface{}) ([]database.Organization, error) {
19902019
return q.db.GetOrganizations(ctx, args)

coderd/database/dbmem/dbmem.go

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3974,6 +3974,54 @@ func (q *FakeQuerier) GetOrganizationIDsByMemberIDs(_ context.Context, ids []uui
39743974
return getOrganizationIDsByMemberIDRows, nil
39753975
}
39763976

3977+
func (q *FakeQuerier) GetOrganizationResourceCountByID(ctx context.Context, organizationID uuid.UUID) (database.GetOrganizationResourceCountByIDRow, error) {
3978+
q.mutex.RLock()
3979+
defer q.mutex.RUnlock()
3980+
3981+
workspacesCount := 0
3982+
for _, workspace := range q.workspaces {
3983+
if workspace.OrganizationID == organizationID {
3984+
workspacesCount++
3985+
}
3986+
}
3987+
3988+
groupsCount := 0
3989+
for _, group := range q.groups {
3990+
if group.OrganizationID == organizationID {
3991+
groupsCount++
3992+
}
3993+
}
3994+
3995+
templatesCount := 0
3996+
for _, template := range q.templates {
3997+
if template.OrganizationID == organizationID {
3998+
templatesCount++
3999+
}
4000+
}
4001+
4002+
organizationMembersCount := 0
4003+
for _, organizationMember := range q.organizationMembers {
4004+
if organizationMember.OrganizationID == organizationID {
4005+
organizationMembersCount++
4006+
}
4007+
}
4008+
4009+
provKeyCount := 0
4010+
for _, provKey := range q.provisionerKeys {
4011+
if provKey.OrganizationID == organizationID {
4012+
provKeyCount++
4013+
}
4014+
}
4015+
4016+
return database.GetOrganizationResourceCountByIDRow{
4017+
WorkspaceCount: int64(workspacesCount),
4018+
GroupCount: int64(groupsCount),
4019+
TemplateCount: int64(templatesCount),
4020+
MemberCount: int64(organizationMembersCount),
4021+
ProvisionerKeyCount: int64(provKeyCount),
4022+
}, nil
4023+
}
4024+
39774025
func (q *FakeQuerier) GetOrganizations(_ context.Context, args database.GetOrganizationsParams) ([]database.Organization, error) {
39784026
q.mutex.RLock()
39794027
defer q.mutex.RUnlock()

coderd/database/dbmetrics/querymetrics.go

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/dbmock/dbmock.go

Lines changed: 15 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/dump.sql

Lines changed: 20 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/querier.go

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/queries.sql.go

Lines changed: 30 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)