MCPcopy Index your code
hub / github.com/apache/devlake / filterTasksWithLastStatus

Function filterTasksWithLastStatus

backend/server/services/task.go:336–358  ·  view source on GitHub ↗

filterTasksWithLastStatus returns the latest task for each plugin

(tasks []*models.Task)

Source from the content-addressed store, hash-verified

334
335// filterTasksWithLastStatus returns the latest task for each plugin
336func filterTasksWithLastStatus(tasks []*models.Task) []*models.Task {
337 taskMap := make(map[string]*models.Task)
338 for _, task := range tasks {
339 key := fmt.Sprintf("%d-%d-%d", task.PipelineId, task.PipelineRow, task.PipelineCol)
340 if existingTask, ok := taskMap[key]; ok {
341 if task.BeganAt != nil && (existingTask.BeganAt == nil || task.BeganAt.After(*existingTask.BeganAt)) {
342 taskMap[key] = task
343 }
344 } else {
345 taskMap[key] = task
346 }
347 }
348
349 var filteredTasks []*models.Task
350 for _, task := range tasks {
351 key := fmt.Sprintf("%d-%d-%d", task.PipelineId, task.PipelineRow, task.PipelineCol)
352 if filteredTask, ok := taskMap[key]; ok {
353 filteredTasks = append(filteredTasks, filteredTask)
354 }
355 }
356
357 return filteredTasks
358}
359
360func getTaskStatus(statuses []string) string {
361 var status string

Callers 1

GetSubTasksInfoFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected