@@ -69,7 +69,7 @@ func New() database.Store {
69
69
templates : make ([]database.TemplateTable , 0 ),
70
70
workspaceAgentStats : make ([]database.WorkspaceAgentStat , 0 ),
71
71
workspaceAgentLogs : make ([]database.WorkspaceAgentLog , 0 ),
72
- workspaceBuilds : make ([]database.WorkspaceBuildTable , 0 ),
72
+ workspaceBuilds : make ([]database.WorkspaceBuild , 0 ),
73
73
workspaceApps : make ([]database.WorkspaceApp , 0 ),
74
74
workspaces : make ([]database.Workspace , 0 ),
75
75
licenses : make ([]database.License , 0 ),
@@ -171,7 +171,7 @@ type data struct {
171
171
workspaceApps []database.WorkspaceApp
172
172
workspaceAppStatsLastInsertID int64
173
173
workspaceAppStats []database.WorkspaceAppStat
174
- workspaceBuilds []database.WorkspaceBuildTable
174
+ workspaceBuilds []database.WorkspaceBuild
175
175
workspaceBuildParameters []database.WorkspaceBuildParameter
176
176
workspaceResourceMetadata []database.WorkspaceResourceMetadatum
177
177
workspaceResources []database.WorkspaceResource
@@ -542,7 +542,7 @@ func (q *FakeQuerier) templateVersionWithUserNoLock(tpl database.TemplateVersion
542
542
return withUser
543
543
}
544
544
545
- func (q * FakeQuerier ) workspaceBuildWithUserNoLock (tpl database.WorkspaceBuildTable ) database.WorkspaceBuild {
545
+ func (q * FakeQuerier ) workspaceBuildWithUserNoLock (tpl database.WorkspaceBuild ) database.WorkspaceBuild {
546
546
var user database.User
547
547
for _ , _user := range q .users {
548
548
if _user .ID == tpl .InitiatorID {
@@ -2801,7 +2801,7 @@ func (q *FakeQuerier) GetQuotaConsumedForUser(_ context.Context, userID uuid.UUI
2801
2801
continue
2802
2802
}
2803
2803
2804
- var lastBuild database.WorkspaceBuildTable
2804
+ var lastBuild database.WorkspaceBuild
2805
2805
for _ , build := range q .workspaceBuilds {
2806
2806
if build .WorkspaceID != workspace .ID {
2807
2807
continue
@@ -3488,7 +3488,7 @@ func (q *FakeQuerier) GetTemplateParameterInsights(ctx context.Context, arg data
3488
3488
defer q .mutex .RUnlock ()
3489
3489
3490
3490
// WITH latest_workspace_builds ...
3491
- latestWorkspaceBuilds := make (map [uuid.UUID ]database.WorkspaceBuildTable )
3491
+ latestWorkspaceBuilds := make (map [uuid.UUID ]database.WorkspaceBuild )
3492
3492
for _ , wb := range q .workspaceBuilds {
3493
3493
if wb .CreatedAt .Before (arg .StartTime ) || wb .CreatedAt .Equal (arg .EndTime ) || wb .CreatedAt .After (arg .EndTime ) {
3494
3494
continue
@@ -4270,20 +4270,14 @@ func (q *FakeQuerier) GetUsersByIDs(_ context.Context, ids []uuid.UUID) ([]datab
4270
4270
return users , nil
4271
4271
}
4272
4272
4273
- func (q * FakeQuerier ) GetWorkspaceAgentAndOwnerByAuthToken (_ context.Context , authToken uuid.UUID ) (database.GetWorkspaceAgentAndOwnerByAuthTokenRow , error ) {
4273
+ func (q * FakeQuerier ) GetWorkspaceAgentAndLatestBuildByAuthToken (_ context.Context , authToken uuid.UUID ) (database.GetWorkspaceAgentAndLatestBuildByAuthTokenRow , error ) {
4274
4274
q .mutex .RLock ()
4275
4275
defer q .mutex .RUnlock ()
4276
-
4277
- // map of build number -> row
4278
- rows := make (map [int32 ]database.GetWorkspaceAgentAndOwnerByAuthTokenRow )
4279
-
4280
- // We want to return the latest build number
4281
- var latestBuildNumber int32
4276
+ rows := []database.GetWorkspaceAgentAndLatestBuildByAuthTokenRow {}
4277
+ // We want to return the latest build number for each workspace
4278
+ latestBuildNumber := make (map [uuid.UUID ]int32 )
4282
4279
4283
4280
for _ , agt := range q .workspaceAgents {
4284
- if agt .AuthToken != authToken {
4285
- continue
4286
- }
4287
4281
// get the related workspace and user
4288
4282
for _ , res := range q .workspaceResources {
4289
4283
if agt .ResourceID != res .ID {
@@ -4300,47 +4294,43 @@ func (q *FakeQuerier) GetWorkspaceAgentAndOwnerByAuthToken(_ context.Context, au
4300
4294
if ws .Deleted {
4301
4295
continue
4302
4296
}
4303
- var row database.GetWorkspaceAgentAndOwnerByAuthTokenRow
4304
- row .WorkspaceID = ws .ID
4305
- row .TemplateID = ws .TemplateID
4297
+ row := database.GetWorkspaceAgentAndLatestBuildByAuthTokenRow {
4298
+ Workspace : database.Workspace {
4299
+ ID : ws .ID ,
4300
+ TemplateID : ws .TemplateID ,
4301
+ },
4302
+ WorkspaceAgent : agt ,
4303
+ WorkspaceBuild : build ,
4304
+ }
4306
4305
usr , err := q .getUserByIDNoLock (ws .OwnerID )
4307
4306
if err != nil {
4308
- return database.GetWorkspaceAgentAndOwnerByAuthTokenRow {}, sql .ErrNoRows
4309
- }
4310
- row .OwnerID = usr .ID
4311
- row .OwnerRoles = append (usr .RBACRoles , "member" )
4312
- // We also need to get org roles for the user
4313
- row .OwnerName = usr .Username
4314
- row .WorkspaceAgent = agt
4315
- row .TemplateVersionID = build .TemplateVersionID
4316
- for _ , mem := range q .organizationMembers {
4317
- if mem .UserID == usr .ID {
4318
- row .OwnerRoles = append (row .OwnerRoles , fmt .Sprintf ("organization-member:%s" , mem .OrganizationID .String ()))
4319
- }
4320
- }
4321
- // And group memberships
4322
- for _ , groupMem := range q .groupMembers {
4323
- if groupMem .UserID == usr .ID {
4324
- row .OwnerGroups = append (row .OwnerGroups , groupMem .GroupID .String ())
4325
- }
4307
+ return database.GetWorkspaceAgentAndLatestBuildByAuthTokenRow {}, sql .ErrNoRows
4326
4308
}
4309
+ row .Workspace .OwnerID = usr .ID
4327
4310
4328
4311
// Keep track of the latest build number
4329
- rows [ build . BuildNumber ] = row
4330
- if build .BuildNumber > latestBuildNumber {
4331
- latestBuildNumber = build .BuildNumber
4312
+ rows = append ( rows , row )
4313
+ if build .BuildNumber > latestBuildNumber [ ws . ID ] {
4314
+ latestBuildNumber [ ws . ID ] = build .BuildNumber
4332
4315
}
4333
4316
}
4334
4317
}
4335
4318
}
4336
4319
}
4337
4320
4338
- if len (rows ) == 0 {
4339
- return database.GetWorkspaceAgentAndOwnerByAuthTokenRow {}, sql .ErrNoRows
4321
+ for i := range rows {
4322
+ if rows [i ].WorkspaceAgent .AuthToken != authToken {
4323
+ continue
4324
+ }
4325
+
4326
+ if rows [i ].WorkspaceBuild .BuildNumber != latestBuildNumber [rows [i ].Workspace .ID ] {
4327
+ continue
4328
+ }
4329
+
4330
+ return rows [i ], nil
4340
4331
}
4341
4332
4342
- // Return the row related to the latest build
4343
- return rows [latestBuildNumber ], nil
4333
+ return database.GetWorkspaceAgentAndLatestBuildByAuthTokenRow {}, sql .ErrNoRows
4344
4334
}
4345
4335
4346
4336
func (q * FakeQuerier ) GetWorkspaceAgentByID (ctx context.Context , id uuid.UUID ) (database.WorkspaceAgent , error ) {
@@ -6243,7 +6233,7 @@ func (q *FakeQuerier) InsertWorkspaceBuild(_ context.Context, arg database.Inser
6243
6233
q .mutex .Lock ()
6244
6234
defer q .mutex .Unlock ()
6245
6235
6246
- workspaceBuild := database.WorkspaceBuildTable {
6236
+ workspaceBuild := database.WorkspaceBuild {
6247
6237
ID : arg .ID ,
6248
6238
CreatedAt : arg .CreatedAt ,
6249
6239
UpdatedAt : arg .UpdatedAt ,
0 commit comments