aboutsummaryrefslogtreecommitdiff
path: root/job
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--job/job.go14
-rw-r--r--job/utils.go27
2 files changed, 41 insertions, 0 deletions
diff --git a/job/job.go b/job/job.go
new file mode 100644
index 0000000..e15b2eb
--- /dev/null
+++ b/job/job.go
@@ -0,0 +1,14 @@
+package job
+
+import "fmt"
+
+// Job is a bareos job
+type Job struct {
+ Name string
+ Timestamp uint64
+ Success bool
+}
+
+func (job Job) String() string {
+ return fmt.Sprintf("Name: \"%s\", Timestamp: \"%d\", Success: \"%t\"", job.Name, job.Timestamp, job.Success)
+}
diff --git a/job/utils.go b/job/utils.go
new file mode 100644
index 0000000..8bbb6eb
--- /dev/null
+++ b/job/utils.go
@@ -0,0 +1,27 @@
+package job
+
+// KeepOldestOnly filters a job list and keeps only the most recent entry for a job name
+func KeepOldestOnly(jobs []Job) []Job {
+ tmpMap := make(map[string]Job)
+ for _, elt := range jobs {
+ prev, exists := tmpMap[elt.Name]
+ if !exists || (exists && prev.Timestamp < elt.Timestamp) {
+ tmpMap[elt.Name] = elt
+ }
+ }
+ values := make([]Job, 0, len(tmpMap))
+ for _, value := range tmpMap {
+ values = append(values, value)
+ }
+ return values
+}
+
+// KeepSuccessOnly returns only the successful jobs from a job list (suiatble to write a new spool file)
+func KeepSuccessOnly(jobs []Job) (result []Job) {
+ for _, job := range jobs {
+ if job.Success {
+ result = append(result, job)
+ }
+ }
+ return
+}