chore: join owner, template, and org in new workspace view (#15116)

Joins in fields like `username`, `avatar_url`, `organization_name`,
`template_name` to `workspaces` via a **view**. 
The view must be maintained moving forward, but this prevents needing to
add RBAC permissions to fetch related workspace fields.
This commit is contained in:
Steven Masley
2024-10-22 09:20:54 -05:00
committed by GitHub
parent 5076161078
commit 343f8ec9ab
81 changed files with 1063 additions and 735 deletions
+1 -1
View File
@@ -12,7 +12,7 @@ type Auditable interface {
database.Template |
database.TemplateVersion |
database.User |
database.Workspace |
database.WorkspaceTable |
database.GitSSHKey |
database.WorkspaceBuild |
database.AuditableGroup |
+4 -4
View File
@@ -82,7 +82,7 @@ func ResourceTarget[T Auditable](tgt T) string {
return typed.Name
case database.User:
return typed.Username
case database.Workspace:
case database.WorkspaceTable:
return typed.Name
case database.WorkspaceBuild:
// this isn't used
@@ -133,7 +133,7 @@ func ResourceID[T Auditable](tgt T) uuid.UUID {
return typed.ID
case database.User:
return typed.ID
case database.Workspace:
case database.WorkspaceTable:
return typed.ID
case database.WorkspaceBuild:
return typed.ID
@@ -181,7 +181,7 @@ func ResourceType[T Auditable](tgt T) database.ResourceType {
return database.ResourceTypeTemplateVersion
case database.User:
return database.ResourceTypeUser
case database.Workspace:
case database.WorkspaceTable:
return database.ResourceTypeWorkspace
case database.WorkspaceBuild:
return database.ResourceTypeWorkspaceBuild
@@ -225,7 +225,7 @@ func ResourceRequiresOrgID[T Auditable]() bool {
switch any(tgt).(type) {
case database.Template, database.TemplateVersion:
return true
case database.Workspace, database.WorkspaceBuild:
case database.WorkspaceTable, database.WorkspaceBuild:
return true
case database.AuditableGroup:
return true