Procházet zdrojové kódy

添加KV数据库操作工具

Hui Chen před 12 roky
rodič
revize
2ee88e43ce
2 změnil soubory, kde provedl 48 přidání a 0 odebrání
  1. 20 0
      utils/kv_utills.go
  2. 28 0
      utils/kv_utills_test.go

+ 20 - 0
utils/kv_utills.go

@@ -0,0 +1,20 @@
+package utils
+
+import (
+	"github.com/cznic/kv"
+)
+
+// 打开或者创建KV数据库
+// 当path指向的数据库存在时打开该数据库,否则尝试在该路径处创建新数据库
+func OpenOrCreateKv(path string, options *kv.Options) (*kv.DB, error) {
+	db, errOpen := kv.Open(path, options)
+	if errOpen != nil {
+		var errCreate error
+		db, errCreate = kv.Create(path, options)
+		if errCreate != nil {
+			return db, errCreate
+		}
+	}
+
+	return db, nil
+}

+ 28 - 0
utils/kv_utills_test.go

@@ -0,0 +1,28 @@
+package utils
+
+import (
+	"github.com/cznic/kv"
+	"os"
+	"testing"
+)
+
+func TestOpenOrCreateKv(t *testing.T) {
+	db, err := OpenOrCreateKv("test.kv", &kv.Options{})
+	Expect(t, "<nil>", err)
+	db.Close()
+
+	db, err = OpenOrCreateKv("test.kv", &kv.Options{})
+	Expect(t, "<nil>", err)
+	err = db.Set([]byte("key1"), []byte("value1"))
+	Expect(t, "<nil>", err)
+
+	buffer := make([]byte, 100)
+	buffer, err = db.Get(nil, []byte("key1"))
+	Expect(t, "<nil>", err)
+	Expect(t, "value1", string(buffer))
+
+	walFile := db.WALName()
+	db.Close()
+	os.Remove(walFile)
+	os.Remove("test.kv")
+}