51 lines
840 B
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)
|
|
}
|