diff options
| author | mo khan <mo@mokhan.ca> | 2025-01-13 10:41:02 -0700 |
|---|---|---|
| committer | mo khan <mo@mokhan.ca> | 2025-01-13 10:41:02 -0700 |
| commit | b4dcf5ee36d048c90f99692a5f03f0db2183ffd0 (patch) | |
| tree | 11d584c3bdb22c3bf7186ad0e920412d1abf5533 | |
| parent | 77bddf64c1991acf97c7c8896203bc9872012918 (diff) | |
Only update storage when file does not exist
| -rw-r--r-- | .tool-versions | 2 | ||||
| -rw-r--r-- | go.mod | 2 | ||||
| -rw-r--r-- | pkg/db/storage.go | 15 |
3 files changed, 17 insertions, 2 deletions
diff --git a/.tool-versions b/.tool-versions index a02c9a2..db5d8ee 100644 --- a/.tool-versions +++ b/.tool-versions @@ -1 +1 @@ -golang 1.22.3 +golang 1.23.4 @@ -1,6 +1,6 @@ module gitlab.com/mokhax/stanuki -go 1.22 +go 1.23 require ( github.com/magefile/mage v1.15.0 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 +} |
