From b4dcf5ee36d048c90f99692a5f03f0db2183ffd0 Mon Sep 17 00:00:00 2001 From: mo khan Date: Mon, 13 Jan 2025 10:41:02 -0700 Subject: Only update storage when file does not exist --- pkg/db/storage.go | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'pkg') 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 +} -- cgit v1.2.3