MCPcopy Index your code
hub / github.com/coder/coder / taskFromDBTaskAndWorkspace

Function taskFromDBTaskAndWorkspace

coderd/aitasks.go:261–315  ·  view source on GitHub ↗

taskFromDBTaskAndWorkspace creates a codersdk.Task response from the task database record and workspace.

(dbTask database.Task, ws codersdk.Workspace)

Source from the content-addressed store, hash-verified

259// taskFromDBTaskAndWorkspace creates a codersdk.Task response from the task
260// database record and workspace.
261func taskFromDBTaskAndWorkspace(dbTask database.Task, ws codersdk.Workspace) codersdk.Task {
262 var taskAgentLifecycle *codersdk.WorkspaceAgentLifecycle
263 var taskAgentHealth *codersdk.WorkspaceAgentHealth
264 var taskAppHealth *codersdk.WorkspaceAppHealth
265
266 if dbTask.WorkspaceAgentLifecycleState.Valid {
267 taskAgentLifecycle = ptr.Ref(codersdk.WorkspaceAgentLifecycle(dbTask.WorkspaceAgentLifecycleState.WorkspaceAgentLifecycleState))
268 }
269 if dbTask.WorkspaceAppHealth.Valid {
270 taskAppHealth = ptr.Ref(codersdk.WorkspaceAppHealth(dbTask.WorkspaceAppHealth.WorkspaceAppHealth))
271 }
272
273 // If we have an agent ID from the task, find the agent health info
274 if dbTask.WorkspaceAgentID.Valid {
275 findTaskAgentLoop:
276 for _, resource := range ws.LatestBuild.Resources {
277 for _, agent := range resource.Agents {
278 if agent.ID == dbTask.WorkspaceAgentID.UUID {
279 taskAgentHealth = &agent.Health
280 break findTaskAgentLoop
281 }
282 }
283 }
284 }
285
286 currentState := deriveTaskCurrentState(dbTask, ws, taskAgentLifecycle, taskAppHealth)
287
288 return codersdk.Task{
289 ID: dbTask.ID,
290 OrganizationID: dbTask.OrganizationID,
291 OwnerID: dbTask.OwnerID,
292 OwnerName: dbTask.OwnerUsername,
293 OwnerAvatarURL: dbTask.OwnerAvatarUrl,
294 Name: dbTask.Name,
295 DisplayName: dbTask.DisplayName,
296 TemplateID: ws.TemplateID,
297 TemplateVersionID: dbTask.TemplateVersionID,
298 TemplateName: ws.TemplateName,
299 TemplateDisplayName: ws.TemplateDisplayName,
300 TemplateIcon: ws.TemplateIcon,
301 WorkspaceID: dbTask.WorkspaceID,
302 WorkspaceName: ws.Name,
303 WorkspaceBuildNumber: dbTask.WorkspaceBuildNumber.Int32,
304 WorkspaceStatus: ws.LatestBuild.Status,
305 WorkspaceAgentID: dbTask.WorkspaceAgentID,
306 WorkspaceAgentLifecycle: taskAgentLifecycle,
307 WorkspaceAgentHealth: taskAgentHealth,
308 WorkspaceAppID: dbTask.WorkspaceAppID,
309 InitialPrompt: dbTask.Prompt,
310 Status: codersdk.TaskStatus(dbTask.Status),
311 CurrentState: currentState,
312 CreatedAt: dbTask.CreatedAt,
313 UpdatedAt: ws.UpdatedAt,
314 }
315}
316
317// appStatusStateToTaskState converts a WorkspaceAppStatusState to a
318// TaskState. The two enums mostly share values but "failure" in the

Callers 3

tasksCreateMethod · 0.85
convertTasksMethod · 0.85
taskGetMethod · 0.85

Calls 5

RefFunction · 0.92
WorkspaceAgentLifecycleTypeAlias · 0.92
WorkspaceAppHealthTypeAlias · 0.92
TaskStatusTypeAlias · 0.92
deriveTaskCurrentStateFunction · 0.85

Tested by

no test coverage detected