Files
onyx-prebootstrap/internal/storage/workstreams.go

48 lines
1.2 KiB
Go

package storage
import (
"fmt"
"os"
"git.dws.rip/DWS/onyx/internal/models"
)
// LoadWorkstreams loads the workstream collection from the workstreams.json file
func LoadWorkstreams(path string) (*models.WorkstreamCollection, error) {
// Check if file exists
if _, err := os.Stat(path); os.IsNotExist(err) {
// Return empty collection if file doesn't exist
return models.NewWorkstreamCollection(), nil
}
// Read the file
data, err := os.ReadFile(path)
if err != nil {
return nil, fmt.Errorf("failed to read workstreams file: %w", err)
}
// Deserialize the workstream collection
collection, err := models.DeserializeWorkstreamCollection(data)
if err != nil {
return nil, fmt.Errorf("failed to deserialize workstreams: %w", err)
}
return collection, nil
}
// SaveWorkstreams saves the workstream collection to the workstreams.json file
func SaveWorkstreams(path string, collection *models.WorkstreamCollection) error {
// Serialize the collection
data, err := collection.Serialize()
if err != nil {
return fmt.Errorf("failed to serialize workstreams: %w", err)
}
// Write to file
if err := os.WriteFile(path, data, 0644); err != nil {
return fmt.Errorf("failed to write workstreams file: %w", err)
}
return nil
}