Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit55503d7

Browse files
committed
chore: new workspace view to join in owner, template, and org
Previously this data was fetched via seperate queries. This causedan issue in orgs, as users are site wide scoped. So user readaccess was required to read another user's username.Now it is all joined into the workspace, implcitly giving read permsto some fields in related objects.
1 parent512cbf1 commit55503d7

27 files changed

+625
-426
lines changed

‎coderd/activitybump_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,7 @@ func TestWorkspaceActivityBump(t *testing.T) {
199199
t.Parallel()
200200

201201
client,workspace,assertBumped:=setupActivityTest(t)
202-
202+
Access-Control-Allow-Origin
203203
resources:=coderdtest.AwaitWorkspaceAgents(t,client,workspace.ID)
204204
conn,err:=workspacesdk.New(client).
205205
DialAgent(ctx,resources[0].Agents[0].ID,&workspacesdk.DialAgentOptions{

‎coderd/agentapi/api.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ func New(opts Options) *API {
106106
iferr!=nil {
107107
returnuuid.Nil,err
108108
}
109-
returnws.Workspace.ID,nil
109+
returnws.ID,nil
110110
},
111111
}
112112

@@ -231,9 +231,9 @@ func (a *API) workspaceID(ctx context.Context, agent *database.WorkspaceAgent) (
231231
}
232232

233233
a.mu.Lock()
234-
a.cachedWorkspaceID=getWorkspaceAgentByIDRow.Workspace.ID
234+
a.cachedWorkspaceID=getWorkspaceAgentByIDRow.ID
235235
a.mu.Unlock()
236-
returngetWorkspaceAgentByIDRow.Workspace.ID,nil
236+
returngetWorkspaceAgentByIDRow.ID,nil
237237
}
238238

239239
func (a*API)publishWorkspaceUpdate(ctx context.Context,agent*database.WorkspaceAgent)error {

‎coderd/agentapi/stats.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ func (a *StatsAPI) UpdateStats(ctx context.Context, req *agentproto.UpdateStatsR
5050
iferr!=nil {
5151
returnnil,xerrors.Errorf("get workspace by agent ID %q: %w",workspaceAgent.ID,err)
5252
}
53-
workspace:=getWorkspaceAgentByIDRow.Workspace
53+
workspace:=getWorkspaceAgentByIDRow
5454
a.Log.Debug(ctx,"read stats report",
5555
slog.F("interval",a.AgentStatsRefreshInterval),
5656
slog.F("workspace_id",workspace.ID),

‎coderd/audit/diff.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ type Auditable interface {
1212
database.Template|
1313
database.TemplateVersion|
1414
database.User|
15-
database.Workspace|
15+
database.WorkspaceTable|
1616
database.GitSSHKey|
1717
database.WorkspaceBuild|
1818
database.AuditableGroup|

‎coderd/autobuild/lifecycle_executor.go

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -234,22 +234,25 @@ func (e *Executor) runOnce(t time.Time) Stats {
234234
// threshold for inactivity.
235235
ifreason==database.BuildReasonDormancy {
236236
wsOld:=ws
237-
ws,err=tx.UpdateWorkspaceDormantDeletingAt(e.ctx, database.UpdateWorkspaceDormantDeletingAtParams{
237+
wsNew,err:=tx.UpdateWorkspaceDormantDeletingAt(e.ctx, database.UpdateWorkspaceDormantDeletingAtParams{
238238
ID:ws.ID,
239239
DormantAt: sql.NullTime{
240240
Time:dbtime.Now(),
241241
Valid:true,
242242
},
243243
})
244244

245-
auditLog=&auditParams{
246-
Old:wsOld,
247-
New:ws,
248-
}
249245
iferr!=nil {
250246
returnxerrors.Errorf("update workspace dormant deleting at: %w",err)
251247
}
252248

249+
auditLog=&auditParams{
250+
Old:wsOld.WorkspaceTable(),
251+
New:wsNew,
252+
}
253+
// To keep the `ws` accurate without doing a sql fetch
254+
ws.DormantAt=wsNew.DormantAt
255+
253256
shouldNotifyDormancy=true
254257

255258
log.Info(e.ctx,"dormant workspace",
@@ -510,8 +513,8 @@ func isEligibleForFailedStop(build database.WorkspaceBuild, job database.Provisi
510513
}
511514

512515
typeauditParamsstruct {
513-
Old database.Workspace
514-
New database.Workspace
516+
Old database.WorkspaceTable
517+
New database.WorkspaceTable
515518
Successbool
516519
}
517520

@@ -521,7 +524,7 @@ func auditBuild(ctx context.Context, log slog.Logger, auditor audit.Auditor, par
521524
status=http.StatusOK
522525
}
523526

524-
audit.BackgroundAudit(ctx,&audit.BackgroundAuditParams[database.Workspace]{
527+
audit.BackgroundAudit(ctx,&audit.BackgroundAuditParams[database.WorkspaceTable]{
525528
Audit:auditor,
526529
Log:log,
527530
UserID:params.New.OwnerID,

‎coderd/database/dbauthz/dbauthz.go

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2574,7 +2574,7 @@ func (q *querier) GetWorkspaceBuildsCreatedAfter(ctx context.Context, createdAt
25742574
returnq.db.GetWorkspaceBuildsCreatedAfter(ctx,createdAt)
25752575
}
25762576

2577-
func (q*querier)GetWorkspaceByAgentID(ctx context.Context,agentID uuid.UUID) (database.GetWorkspaceByAgentIDRow,error) {
2577+
func (q*querier)GetWorkspaceByAgentID(ctx context.Context,agentID uuid.UUID) (database.Workspace,error) {
25782578
returnfetch(q.log,q.auth,q.db.GetWorkspaceByAgentID)(ctx,agentID)
25792579
}
25802580

@@ -2719,7 +2719,7 @@ func (q *querier) GetWorkspaces(ctx context.Context, arg database.GetWorkspacesP
27192719
returnq.db.GetAuthorizedWorkspaces(ctx,arg,prep)
27202720
}
27212721

2722-
func (q*querier)GetWorkspacesEligibleForTransition(ctx context.Context,now time.Time) ([]database.Workspace,error) {
2722+
func (q*querier)GetWorkspacesEligibleForTransition(ctx context.Context,now time.Time) ([]database.WorkspaceTable,error) {
27232723
returnq.db.GetWorkspacesEligibleForTransition(ctx,now)
27242724
}
27252725

@@ -3009,7 +3009,7 @@ func (q *querier) InsertUserLink(ctx context.Context, arg database.InsertUserLin
30093009
returnq.db.InsertUserLink(ctx,arg)
30103010
}
30113011

3012-
func (q*querier)InsertWorkspace(ctx context.Context,arg database.InsertWorkspaceParams) (database.Workspace,error) {
3012+
func (q*querier)InsertWorkspace(ctx context.Context,arg database.InsertWorkspaceParams) (database.WorkspaceTable,error) {
30133013
obj:=rbac.ResourceWorkspace.WithOwner(arg.OwnerID.String()).InOrg(arg.OrganizationID)
30143014
returninsert(q.log,q.auth,obj,q.db.InsertWorkspace)(ctx,arg)
30153015
}
@@ -3751,9 +3751,13 @@ func (q *querier) UpdateUserStatus(ctx context.Context, arg database.UpdateUserS
37513751
returnupdateWithReturn(q.log,q.auth,fetch,q.db.UpdateUserStatus)(ctx,arg)
37523752
}
37533753

3754-
func (q*querier)UpdateWorkspace(ctx context.Context,arg database.UpdateWorkspaceParams) (database.Workspace,error) {
3755-
fetch:=func(ctx context.Context,arg database.UpdateWorkspaceParams) (database.Workspace,error) {
3756-
returnq.db.GetWorkspaceByID(ctx,arg.ID)
3754+
func (q*querier)UpdateWorkspace(ctx context.Context,arg database.UpdateWorkspaceParams) (database.WorkspaceTable,error) {
3755+
fetch:=func(ctx context.Context,arg database.UpdateWorkspaceParams) (database.WorkspaceTable,error) {
3756+
w,err:=q.db.GetWorkspaceByID(ctx,arg.ID)
3757+
iferr!=nil {
3758+
return database.WorkspaceTable{},err
3759+
}
3760+
returnw.WorkspaceTable(),nil
37573761
}
37583762
returnupdateWithReturn(q.log,q.auth,fetch,q.db.UpdateWorkspace)(ctx,arg)
37593763
}
@@ -3905,9 +3909,13 @@ func (q *querier) UpdateWorkspaceDeletedByID(ctx context.Context, arg database.U
39053909
returndeleteQ(q.log,q.auth,fetch,q.db.UpdateWorkspaceDeletedByID)(ctx,arg)
39063910
}
39073911

3908-
func (q*querier)UpdateWorkspaceDormantDeletingAt(ctx context.Context,arg database.UpdateWorkspaceDormantDeletingAtParams) (database.Workspace,error) {
3909-
fetch:=func(ctx context.Context,arg database.UpdateWorkspaceDormantDeletingAtParams) (database.Workspace,error) {
3910-
returnq.db.GetWorkspaceByID(ctx,arg.ID)
3912+
func (q*querier)UpdateWorkspaceDormantDeletingAt(ctx context.Context,arg database.UpdateWorkspaceDormantDeletingAtParams) (database.WorkspaceTable,error) {
3913+
fetch:=func(ctx context.Context,arg database.UpdateWorkspaceDormantDeletingAtParams) (database.WorkspaceTable,error) {
3914+
w,err:=q.db.GetWorkspaceByID(ctx,arg.ID)
3915+
iferr!=nil {
3916+
return database.WorkspaceTable{},err
3917+
}
3918+
returnw.WorkspaceTable(),nil
39113919
}
39123920
returnupdateWithReturn(q.log,q.auth,fetch,q.db.UpdateWorkspaceDormantDeletingAt)(ctx,arg)
39133921
}
@@ -3940,7 +3948,7 @@ func (q *querier) UpdateWorkspaceTTL(ctx context.Context, arg database.UpdateWor
39403948
returnupdate(q.log,q.auth,fetch,q.db.UpdateWorkspaceTTL)(ctx,arg)
39413949
}
39423950

3943-
func (q*querier)UpdateWorkspacesDormantDeletingAtByTemplateID(ctx context.Context,arg database.UpdateWorkspacesDormantDeletingAtByTemplateIDParams) ([]database.Workspace,error) {
3951+
func (q*querier)UpdateWorkspacesDormantDeletingAtByTemplateID(ctx context.Context,arg database.UpdateWorkspacesDormantDeletingAtByTemplateIDParams) ([]database.WorkspaceTable,error) {
39443952
template,err:=q.db.GetTemplateByID(ctx,arg.TemplateID)
39453953
iferr!=nil {
39463954
returnnil,xerrors.Errorf("get template by id: %w",err)

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp