package spool

import (
	"bareos-zabbix-check/config"
	"bareos-zabbix-check/job"
	"encoding/csv"
	"fmt"
	"log"
	"os"
	"path"
	"strconv"
)

// Load loads a spool file in path
func (s *Spool) Load(c *config.Config) (err error) {
	s.config = c
	// We read the spool
	file, err := os.Open(path.Join(c.WorkDir(), spoolFile))
	if err != nil {
		return fmt.Errorf("Couldn't open spool file, starting from scratch: %s", err)
	}
	defer file.Close()
	lines, err := csv.NewReader(file).ReadAll()
	if err != nil {
		return fmt.Errorf("Corrupted spool file, starting from scratch : %s", err)
	}
	if c.Verbose() {
		log.Printf("Spool file content : %v\n", lines)
	}

	for _, line := range lines {
		var i int
		i, err = strconv.Atoi(line[1])
		if err != nil {
			return fmt.Errorf("Corrupted spool file : couldn't parse timestamp entry")
		}
		s.jobs = append(s.jobs, job.Job{Name: line[0], Timestamp: uint64(i), Success: true})
	}
	return
}