diff options
Diffstat (limited to 'pkg/job/utils.go')
-rw-r--r-- | pkg/job/utils.go | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/pkg/job/utils.go b/pkg/job/utils.go new file mode 100644 index 0000000..6537474 --- /dev/null +++ b/pkg/job/utils.go @@ -0,0 +1,35 @@ +package job + +// KeepOldestOnly filters a job list and keeps only the most recent entry for a job name +func KeepOldestOnly(jobs []Job) (results []Job) { +outerLoop: + for i := 0; i < len(jobs); i++ { + job := jobs[i] + for j := 0; j < len(results); j++ { + result := results[j] + if result.Name == job.Name { + continue outerLoop + } + } + for j := i + 1; j < len(jobs); j++ { + sec := jobs[j] + if sec.Name == job.Name && sec.Timestamp > job.Timestamp { + job = sec + } + } + results = append(results, job) + } + return +} + +// KeepSuccessOnly returns only the successful jobs from a job list (suiatble to write a new spool file) +func KeepSuccessOnly(jobs []Job) (result []Job) { + result = make([]Job, 0) + for i := 0; i < len(jobs); i++ { + job := jobs[i] + if job.Success { + result = append(result, job) + } + } + return +} |