package jobqueue

import (
	"encoding/json"
	"os"
)

// State repräsentiert den Zustand, den wir speichern wollen
type State struct {
	// Jobs enthält alle Jobs, die wir speichern wollen
	Jobs []JobSerializedState `json:"jobs"`
}

type StateManager interface {
	LoadState() error
	SaveState() error
}

// FileStateManager implementiert StateManager
type FileStateManager struct {
	filePath string
	state    *State
}

// LoadState lädt den Zustand aus der Datei
func (f *FileStateManager) LoadState() error {
	file, err := os.Open(f.filePath)
	if err != nil {
		return err
	}
	defer file.Close()

	decoder := json.NewDecoder(file)
	if err := decoder.Decode(&f.state); err != nil {
		return err
	}

	return nil
}

// SaveState speichert den Zustand in der Datei
func (f *FileStateManager) SaveState() error {
	file, err := os.Create(f.filePath)
	if err != nil {
		return err
	}
	defer file.Close()

	encoder := json.NewEncoder(file)
	if err := encoder.Encode(f.state); err != nil {
		return err
	}

	return nil
}