diff options
Diffstat (limited to 'pkg/db')
| -rw-r--r-- | pkg/db/storage.go | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/pkg/db/storage.go b/pkg/db/storage.go index 1c1c428..e12e739 100644 --- a/pkg/db/storage.go +++ b/pkg/db/storage.go @@ -2,6 +2,7 @@ package db import ( "bytes" + "errors" "fmt" "io/ioutil" "os" @@ -30,6 +31,10 @@ func New[T Entity](dir string) *Storage[T] { } func (db *Storage[T]) Save(item T) error { + if db.fileExistsFor(item) { + return nil + } + w := new(bytes.Buffer) x.Check(serde.To(w, item, serde.YAML)) if env.Fetch("DUMP", "") != "" { @@ -42,3 +47,13 @@ func (db *Storage[T]) Save(item T) error { func (db *Storage[T]) filePathFor(item T) string { return fmt.Sprintf("%v/%v.yaml", db.dir, item.Identifier()) } + +func (db *Storage[T]) fileExistsFor(item T) bool { + _, err := os.Stat(db.filePathFor(item)) + + if err != nil && errors.Is(err, os.ErrNotExist) { + return false + } + + return true +} |
