@@ -1143,17 +1143,7 @@ func (q *querier) GetLatestWorkspaceBuildByWorkspaceID(ctx context.Context, work
1143
1143
}
1144
1144
1145
1145
func (q * querier ) GetLatestWorkspaceBuildsByWorkspaceIDs (ctx context.Context , ids []uuid.UUID ) ([]database.WorkspaceBuild , error ) {
1146
- // This is not ideal as not all builds will be returned if the workspace cannot be read.
1147
- // This should probably be handled differently? Maybe join workspace builds with workspace
1148
- // ownership properties and filter on that.
1149
- for _ , id := range ids {
1150
- _ , err := q .GetWorkspaceByID (ctx , id )
1151
- if err != nil {
1152
- return nil , err
1153
- }
1154
- }
1155
-
1156
- return q .db .GetLatestWorkspaceBuildsByWorkspaceIDs (ctx , ids )
1146
+ return fetchWithPostFilter (q .auth , q .db .GetLatestWorkspaceBuildsByWorkspaceIDs )(ctx , ids )
1157
1147
}
1158
1148
1159
1149
func (q * querier ) GetWorkspaceAgentByID (ctx context.Context , id uuid.UUID ) (database.WorkspaceAgent , error ) {
@@ -1255,10 +1245,19 @@ func (q *querier) GetWorkspaceBuildParameters(ctx context.Context, workspaceBuil
1255
1245
}
1256
1246
1257
1247
func (q * querier ) GetWorkspaceBuildsByWorkspaceID (ctx context.Context , arg database.GetWorkspaceBuildsByWorkspaceIDParams ) ([]database.WorkspaceBuild , error ) {
1258
- if _ , err := q .GetWorkspaceByID (ctx , arg .WorkspaceID ); err != nil {
1248
+ builds , err := q .db .GetWorkspaceBuildsByWorkspaceID (ctx , arg )
1249
+ if err != nil {
1250
+ return nil , err
1251
+ }
1252
+ if len (builds ) == 0 {
1253
+ return nil , sql .ErrNoRows
1254
+ }
1255
+ // All builds come from the same workspace, so we only need to check the first one.
1256
+ err = q .authorizeContext (ctx , rbac .ActionRead , builds [0 ])
1257
+ if err != nil {
1259
1258
return nil , err
1260
1259
}
1261
- return q . db . GetWorkspaceBuildsByWorkspaceID ( ctx , arg )
1260
+ return builds , nil
1262
1261
}
1263
1262
1264
1263
func (q * querier ) GetWorkspaceByAgentID (ctx context.Context , agentID uuid.UUID ) (database.Workspace , error ) {
0 commit comments