Files
steam-immich/internal/localstate.go

51 lines
840 B
Go

package steamimmich
import (
"encoding/json"
"errors"
"io"
"os"
)
type assetState struct {
FilePath string
ImmichID string
}
type localState struct {
Assets []assetState
GameIDs map[string]string
}
func loadLocalState(filename string) (*localState, error) {
file, err := os.Open(filename)
if err != nil {
if errors.Is(err, os.ErrNotExist) {
return &localState{Assets: []assetState{}, GameIDs: map[string]string{}}, nil
}
return nil, err
}
content, err := io.ReadAll(file)
if err != nil {
return nil, err
}
var data localState
err = json.Unmarshal(content, &data)
if err != nil {
return nil, err
}
return &data, nil
}
func saveLocalState(filename string, state localState) error {
content, err := json.Marshal(state)
if err != nil {
return err
}
return os.WriteFile(filename, content, 0644)
}