1
0
Fork 0

Big rafactoring : code split in several modules and some other best practices

This commit is contained in:
Julien Dessaux 2020-01-30 17:44:42 +01:00
parent e07ce016c4
commit bea8e5aba8
16 changed files with 506 additions and 386 deletions

14
job/job.go Normal file
View file

@ -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)
}

27
job/utils.go Normal file
View file

@ -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
}