diff --git a/zordfsdb.go b/zordfsdb.go index 9c78117..de95d35 100644 --- a/zordfsdb.go +++ b/zordfsdb.go @@ -4,6 +4,7 @@ import ( "os" "path" "strings" + "time" "g.arns.lt/zordsdavini/abcex" ) @@ -195,3 +196,51 @@ func (db *DB) Dec(vpath string) bool { return true } + +func (db *DB) Now(vpath string) bool { + fullPath := []string{db.Root} + fullPath = append(fullPath, strings.Split(vpath, ".")...) + + now := time.Now() + formatted := now.Format(time.RFC3339) + + os.WriteFile(path.Join(fullPath...), []byte(formatted), 0644) + + err := db.Refresh() + if err != nil { + return false + } + + return true +} + +func (db *DB) Save(vpath string, value string) bool { + fullPath := []string{db.Root} + fullPath = append(fullPath, strings.Split(vpath, ".")...) + + err := os.WriteFile(path.Join(fullPath...), []byte(value), 0644) + if err != nil { + return false + } + + err = db.Refresh() + if err != nil { + return false + } + + return true +} + +func (db *DB) Del(vpath string) bool { + fullPath := []string{db.Root} + fullPath = append(fullPath, strings.Split(vpath, ".")...) + + os.RemoveAll(path.Join(fullPath...)) + + err := db.Refresh() + if err != nil { + return false + } + + return true +} diff --git a/zordfsdb_test.go b/zordfsdb_test.go index b21c1aa..bd5dca7 100644 --- a/zordfsdb_test.go +++ b/zordfsdb_test.go @@ -107,3 +107,68 @@ func TestDec(t *testing.T) { t.Fatal("counter value get fail") } } + +func TestNow(t *testing.T) { + copy(t) + + db, err := InitDB("./testdata2") + if err != nil { + t.Fatal(err) + } + + db.Now("today") + val, found := db.Get("today") + fmt.Println(val) + if !found || len(val) != 25 { + t.Fatal("today value length wrong:", len(val)) + } +} + +func TestSave(t *testing.T) { + copy(t) + + db, err := InitDB("./testdata2") + if err != nil { + t.Fatal(err) + } + + db.Save("newKey", "newValue") + val, found := db.Get("newKey") + fmt.Println(val) + if !found || val != "newValue" { + t.Fatal("newKey value wrong") + } + + db.Save("object.newKey", "newValue2") + val, found = db.Get("object.newKey") + fmt.Println(val) + if !found || val != "newValue2" { + t.Fatal("object.newKey value wrong") + } + + success := db.Save("object2.newKey", "newValue2") + if success { + t.Fatal("object2.newKey value created - should not") + } +} + +func TestDel(t *testing.T) { + copy(t) + + db, err := InitDB("./testdata2") + if err != nil { + t.Fatal(err) + } + + db.Del("counter") + _, found := db.Get("counter") + if found { + t.Fatal("delete failed") + } + + db.Del("list.2") + _, found = db.Get("list.2.key2") + if found { + t.Fatal("delete failed #2") + } +}