summaryrefslogtreecommitdiff
path: root/pkg/db/storage.go
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/db/storage.go')
-rw-r--r--pkg/db/storage.go15
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
+}