Skip to content

Commit

Permalink
z0 - fix storage load/save
Browse files Browse the repository at this point in the history
  • Loading branch information
Jan Saidl committed Apr 1, 2024
1 parent 39123a1 commit 7ad9a2e
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 40 deletions.
16 changes: 0 additions & 16 deletions src/storage/exists.go

This file was deleted.

40 changes: 16 additions & 24 deletions src/storage/handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,43 +34,34 @@ func New[T any](config Config) (*Handler[T], error) {
}

func (h *Handler[T]) load() error {
storageFileExists, err := FileExists(h.config.FilePath)
if err != nil {
return errors.WithStack(err)
}
if !storageFileExists {
return nil
{
f, err := os.Stat(h.config.FilePath)
if os.IsNotExist(err) {
return nil
}
if err != nil {
return errors.WithStack(err)
}
if f.Size() == 0 {
if err := os.Remove(h.config.FilePath); err != nil {
return errors.WithStack(err)
}
return nil
}
}

f, err := file.Open(h.config.FilePath, os.O_RDONLY, h.config.FileMode)
f, err := os.Open(h.config.FilePath)
if err != nil {
return errors.WithStack(err)
}
defer f.Close()

// If the file is empty, set the default value and save it.
fi, err := f.Stat()
if err != nil {
return errors.WithStack(err)
}
if fi.Size() == 0 {
return h.Clear()
}

if err := json.NewDecoder(f).Decode(&h.data); err != nil {
return errors.WithMessagef(err, i18n.T(i18n.UnableToDecodeJsonFile, h.config.FilePath))
}

return nil
}

func (h *Handler[T]) Clear() error {
h.lock.Lock()
defer h.lock.Unlock()
var data T
return h.save(data)
}

func (h *Handler[T]) Update(callback func(T) T) (T, error) {
h.lock.Lock()
defer h.lock.Unlock()
Expand All @@ -95,6 +86,7 @@ func (h *Handler[T]) save(data T) error {
}(); err != nil {
return err
}
os.Remove(h.config.FilePath)
if err := os.Rename(h.config.FilePath+".new", h.config.FilePath); err != nil {
return errors.WithStack(err)
}
Expand Down

0 comments on commit 7ad9a2e

Please sign in to comment.