summaryrefslogtreecommitdiff
path: root/internal
diff options
context:
space:
mode:
Diffstat (limited to 'internal')
-rw-r--r--internal/api/task_view.go26
1 files changed, 16 insertions, 10 deletions
diff --git a/internal/api/task_view.go b/internal/api/task_view.go
index e6e7097..6a4b58e 100644
--- a/internal/api/task_view.go
+++ b/internal/api/task_view.go
@@ -14,28 +14,34 @@ type taskView struct {
*task.Task
Changestats *task.Changestats `json:"changestats,omitempty"`
DeploymentStatus *deployment.Status `json:"deployment_status,omitempty"`
+ ErrorMsg string `json:"error_msg,omitempty"`
+}
+
+var failedStates = map[task.State]bool{
+ task.StateFailed: true,
+ task.StateBudgetExceeded: true,
+ task.StateTimedOut: true,
}
// enrichTask fetches the latest execution for the given task and attaches
-// changestats and deployment_status fields for READY tasks.
-// Non-READY tasks are returned without these extra fields.
+// changestats, deployment_status, and error_msg fields.
func (s *Server) enrichTask(tk *task.Task) *taskView {
view := &taskView{Task: tk}
- if tk.State != task.StateReady {
- return view
- }
-
exec, err := s.store.GetLatestExecution(tk.ID)
if err != nil {
- if err == sql.ErrNoRows {
- // No execution yet — still include deployment status (empty commits).
+ if err == sql.ErrNoRows && tk.State == task.StateReady {
view.DeploymentStatus = deployment.Check(nil, tk.RepositoryURL)
}
return view
}
- view.Changestats = exec.Changestats
- view.DeploymentStatus = deployment.Check(exec.Commits, tk.RepositoryURL)
+ if failedStates[tk.State] && exec.ErrorMsg != "" {
+ view.ErrorMsg = exec.ErrorMsg
+ }
+ if tk.State == task.StateReady {
+ view.Changestats = exec.Changestats
+ view.DeploymentStatus = deployment.Check(exec.Commits, tk.RepositoryURL)
+ }
return view
}