add Store Close method (#1500)

* add Store Close method

* Update sync store build failure
This commit is contained in:
Asim Aslam 2020-04-08 09:51:10 +01:00 committed by Vasiliy Tolstov
parent d5ceff0944
commit 1c20be9d91
2 changed files with 18 additions and 10 deletions

13
file.go
View File

@ -72,13 +72,13 @@ func (m *fileStore) init(opts ...store.Option) error {
} }
// create a directory /tmp/micro // create a directory /tmp/micro
dir := filepath.Join(DefaultDir, "micro") dir := filepath.Join(DefaultDir, m.options.Database)
// create the database handle // create the database handle
fname := m.options.Database + ".db" fname := m.options.Table + ".db"
// Ignoring this as the folder might exist. // Ignoring this as the folder might exist.
// Reads/Writes updates will return with sensible error messages // Reads/Writes updates will return with sensible error messages
// about the dir not existing in case this cannot create the path anyway // about the dir not existing in case this cannot create the path anyway
_ = os.Mkdir(dir, 0700) os.MkdirAll(dir, 0700)
m.dir = dir m.dir = dir
m.fileName = fname m.fileName = fname
@ -223,6 +223,13 @@ func (m *fileStore) set(r *store.Record) error {
}) })
} }
func (m *fileStore) Close() error {
if m.db != nil {
return m.db.Close()
}
return nil
}
func (m *fileStore) Init(opts ...store.Option) error { func (m *fileStore) Init(opts ...store.Option) error {
return m.init(opts...) return m.init(opts...)
} }

View File

@ -13,14 +13,15 @@ import (
"github.com/micro/go-micro/v2/store" "github.com/micro/go-micro/v2/store"
) )
func cleanup() { func cleanup(db string, s store.Store) {
dir := filepath.Join(DefaultDir, "micro/") s.Close()
dir := filepath.Join(DefaultDir, db + "/")
os.RemoveAll(dir) os.RemoveAll(dir)
} }
func TestFileStoreReInit(t *testing.T) { func TestFileStoreReInit(t *testing.T) {
defer cleanup()
s := NewStore(store.Table("aaa")) s := NewStore(store.Table("aaa"))
defer cleanup(DefaultDatabase, s)
s.Init(store.Table("bbb")) s.Init(store.Table("bbb"))
if s.Options().Table != "bbb" { if s.Options().Table != "bbb" {
t.Error("Init didn't reinitialise the store") t.Error("Init didn't reinitialise the store")
@ -28,26 +29,26 @@ func TestFileStoreReInit(t *testing.T) {
} }
func TestFileStoreBasic(t *testing.T) { func TestFileStoreBasic(t *testing.T) {
defer cleanup()
s := NewStore() s := NewStore()
defer cleanup(DefaultDatabase, s)
fileTest(s, t) fileTest(s, t)
} }
func TestFileStoreTable(t *testing.T) { func TestFileStoreTable(t *testing.T) {
defer cleanup()
s := NewStore(store.Table("testTable")) s := NewStore(store.Table("testTable"))
defer cleanup(DefaultDatabase, s)
fileTest(s, t) fileTest(s, t)
} }
func TestFileStoreDatabase(t *testing.T) { func TestFileStoreDatabase(t *testing.T) {
defer cleanup()
s := NewStore(store.Database("testdb")) s := NewStore(store.Database("testdb"))
defer cleanup("testdb", s)
fileTest(s, t) fileTest(s, t)
} }
func TestFileStoreDatabaseTable(t *testing.T) { func TestFileStoreDatabaseTable(t *testing.T) {
defer cleanup()
s := NewStore(store.Table("testTable"), store.Database("testdb")) s := NewStore(store.Table("testTable"), store.Database("testdb"))
defer cleanup("testdb", s)
fileTest(s, t) fileTest(s, t)
} }