diff --git a/memcache/README.md b/memcache/README.md index f3ce7b0e..bdf6703d 100644 --- a/memcache/README.md +++ b/memcache/README.md @@ -51,10 +51,10 @@ type Config struct { // Optional. Default is "127.0.0.1:11211" Servers string - // Clear any existing keys in existing Table + // Reset clears any existing keys in existing Table // // Optional. Default is false - Clear bool + Reset bool } ``` diff --git a/memcache/config.go b/memcache/config.go index fbdd73b0..7e34e06c 100644 --- a/memcache/config.go +++ b/memcache/config.go @@ -10,10 +10,10 @@ type Config struct { // Optional. Default is "127.0.0.1:11211" Servers string - // Clear any existing keys in existing Table + // Reset clears any existing keys in existing Table // // Optional. Default is false - Clear bool + Reset bool // The socket read/write timeout. // diff --git a/memcache/memcache.go b/memcache/memcache.go index 526d1c85..ad3af6fe 100644 --- a/memcache/memcache.go +++ b/memcache/memcache.go @@ -39,7 +39,7 @@ func New(config ...Config) *Storage { panic(err) } - if cfg.Clear { + if cfg.Reset { if err := db.DeleteAll(); err != nil { panic(err) } @@ -93,11 +93,16 @@ func (s *Storage) Delete(key string) error { return s.db.Delete(key) } -// Clear all keys -func (s *Storage) Clear() error { +// Reset all keys +func (s *Storage) Reset() error { return s.db.DeleteAll() } +// Close the database +func (s *Storage) Close() error { + return nil +} + // Acquire item from pool func (s *Storage) acquireItem() *mc.Item { return s.items.Get().(*mc.Item) diff --git a/memcache/memcache_test.go b/memcache/memcache_test.go index 65044835..fddcf1b6 100644 --- a/memcache/memcache_test.go +++ b/memcache/memcache_test.go @@ -104,7 +104,7 @@ func Test_Memcache_Clear(t *testing.T) { err = testStore.Set("john2", val, 0) utils.AssertEqual(t, nil, err) - err = testStore.Clear() + err = testStore.Reset() utils.AssertEqual(t, nil, err) result, err := testStore.Get("john1") diff --git a/memory/README.md b/memory/README.md index bee2b8ce..5113386e 100644 --- a/memory/README.md +++ b/memory/README.md @@ -19,7 +19,7 @@ var ErrNotExist = errors.New("key does not exist") func (s *Storage) Get(key string) ([]byte, error) func (s *Storage) Set(key string, val []byte, exp time.Duration) error func (s *Storage) Delete(key string) error -func (s *Storage) Clear() error +func (s *Storage) Reset() error ``` ### Installation diff --git a/memory/memory.go b/memory/memory.go index 86bfe1b2..61d2422a 100644 --- a/memory/memory.go +++ b/memory/memory.go @@ -75,14 +75,19 @@ func (s *Storage) Delete(key string) error { return nil } -// Clear all keys -func (s *Storage) Clear() error { +// Reset all keys +func (s *Storage) Reset() error { s.mux.Lock() s.db = make(map[string]entry) s.mux.Unlock() return nil } +// Close the database +func (s *Storage) Close() error { + return nil +} + func (s *Storage) gc() { for t := range time.NewTicker(s.gcInterval).C { now := t.Unix() diff --git a/memory/memory_test.go b/memory/memory_test.go index 8d5056e6..9695cff1 100644 --- a/memory/memory_test.go +++ b/memory/memory_test.go @@ -104,7 +104,7 @@ func Test_Memory_Clear(t *testing.T) { err = testStore.Set("john2", val, 0) utils.AssertEqual(t, nil, err) - err = testStore.Clear() + err = testStore.Reset() utils.AssertEqual(t, nil, err) result, err := testStore.Get("john1") diff --git a/mongodb/README.md b/mongodb/README.md index 31d64b22..5c4f6fda 100644 --- a/mongodb/README.md +++ b/mongodb/README.md @@ -18,7 +18,7 @@ var ErrNotExist = errors.New("key does not exist") func (s *Storage) Get(key string) ([]byte, error) func (s *Storage) Set(key string, val []byte, exp time.Duration) error func (s *Storage) Delete(key string) error -func (s *Storage) Clear() error +func (s *Storage) Reset() error ``` ### Installation MongoDB is tested on the 2 last [Go versions](https://golang.org/dl/) with support for modules. So make sure to initialize one first if you didn't do that yet: @@ -47,7 +47,7 @@ store := mongodb.New(mongodb.Config{ Port: 27017, Database: "fiber", Collection: "fiber_storage", - Clear: false, + Reset: false, GCInterval: 10 * time.Second, }) ``` @@ -85,10 +85,10 @@ type Config struct { // Optional. Default is "fiber_storage" Collection string - // Clear any existing keys in existing Table + // Reset clears any existing keys in existing Table // // Optional. Default is false - Clear bool + Reset bool // Time before deleting expired keys // @@ -104,7 +104,7 @@ var ConfigDefault = Config{ Port: 27017, Database: "fiber", Collection: "fiber_storage", - Clear: false, + Reset: false, GCInterval: 10 * time.Second, } ``` diff --git a/mongodb/config.go b/mongodb/config.go index 361a7494..b3977da8 100644 --- a/mongodb/config.go +++ b/mongodb/config.go @@ -36,10 +36,10 @@ type Config struct { // Optional. Default is "fiber_storage" Collection string - // Clear any existing keys in existing Table + // Reset clears any existing keys in existing Table // // Optional. Default is false - Clear bool + Reset bool // Time before deleting expired keys // @@ -53,7 +53,7 @@ var ConfigDefault = Config{ Port: 27017, Database: "fiber", Collection: "fiber_storage", - Clear: false, + Reset: false, GCInterval: 10 * time.Second, } diff --git a/mongodb/mongodb.go b/mongodb/mongodb.go index 4312772a..2eec2627 100644 --- a/mongodb/mongodb.go +++ b/mongodb/mongodb.go @@ -152,11 +152,16 @@ func (s *Storage) Delete(key string) error { return err } -// Clear all keys by drop collection -func (s *Storage) Clear() error { +// Reset all keys by drop collection +func (s *Storage) Reset() error { return s.col.Drop(context.Background()) } +// Close the database +func (s *Storage) Close() error { + return s.db.Client().Disconnect(context.Background()) +} + // Acquire item from pool func (s *Storage) acquireItem() *item { return s.items.Get().(*item) diff --git a/mongodb/mongodb_test.go b/mongodb/mongodb_test.go index 35e94f28..9200df61 100644 --- a/mongodb/mongodb_test.go +++ b/mongodb/mongodb_test.go @@ -8,7 +8,7 @@ import ( ) var testStore = New(Config{ - Clear: true, + Reset: true, }) func Test_MongoDB_Set(t *testing.T) { @@ -106,7 +106,7 @@ func Test_MongoDB_Clear(t *testing.T) { err = testStore.Set("john2", val, 0) utils.AssertEqual(t, nil, err) - err = testStore.Clear() + err = testStore.Reset() utils.AssertEqual(t, nil, err) result, err := testStore.Get("john1") diff --git a/mysql/README.md b/mysql/README.md index b7797df6..169eb6fb 100644 --- a/mysql/README.md +++ b/mysql/README.md @@ -18,7 +18,7 @@ var ErrNotExist = errors.New("key does not exist") func (s *Storage) Get(key string) ([]byte, error) func (s *Storage) Set(key string, val []byte, exp time.Duration) error func (s *Storage) Delete(key string) error -func (s *Storage) Clear() error +func (s *Storage) Reset() error ``` ### Installation MySQL is tested on the 2 last [Go versions](https://golang.org/dl/) with support for modules. So make sure to initialize one first if you didn't do that yet: @@ -47,7 +47,7 @@ store := mysql.New(mysql.Config{ Port: 3306, Database: "fiber", Table: "fiber_storage", - Clear: false, + Reset: false, GCInterval: 10 * time.Second, }) ``` @@ -85,10 +85,10 @@ type Config struct { // Optional. Default is "fiber_storage" Table string - // Clear any existing keys in existing Table + // Reset clears any existing keys in existing Table // // Optional. Default is false - Clear bool + Reset bool // Time before deleting expired keys // @@ -104,7 +104,7 @@ var ConfigDefault = Config{ Port: 3306, Database: "fiber", Table: "fiber_storage", - Clear: false, + Reset: false, GCInterval: 10 * time.Second, } ``` diff --git a/mysql/config.go b/mysql/config.go index f24864c8..8ed1316b 100644 --- a/mysql/config.go +++ b/mysql/config.go @@ -37,10 +37,10 @@ type Config struct { // Optional. Default is "fiber_storage" Table string - // Clear any existing keys in existing Table + // Reset clears any existing keys in existing Table // // Optional. Default is false - Clear bool + Reset bool // Time before deleting expired keys // @@ -62,7 +62,7 @@ var ConfigDefault = Config{ Port: 3306, Database: "fiber", Table: "fiber_storage", - Clear: false, + Reset: false, GCInterval: 10 * time.Second, maxOpenConns: 100, maxIdleConns: 100, diff --git a/mysql/mysql.go b/mysql/mysql.go index 3f750399..1c3fd19a 100644 --- a/mysql/mysql.go +++ b/mysql/mysql.go @@ -18,7 +18,7 @@ type Storage struct { sqlSelect string sqlInsert string sqlDelete string - sqlClear string + sqlReset string sqlGC string } @@ -59,7 +59,7 @@ func New(config ...Config) *Storage { } // Drop table if Clear set to true - if cfg.Clear { + if cfg.Reset { query := fmt.Sprintf(dropQuery, cfg.Table) if _, err = db.Exec(query); err != nil { _ = db.Close() @@ -83,7 +83,7 @@ func New(config ...Config) *Storage { sqlSelect: fmt.Sprintf("SELECT v, e FROM %s WHERE k=?;", cfg.Table), sqlInsert: fmt.Sprintf("INSERT INTO %s (k, v, e) VALUES (?,?,?) ON DUPLICATE KEY UPDATE v = ?, e = ?", cfg.Table), sqlDelete: fmt.Sprintf("DELETE FROM %s WHERE k=?", cfg.Table), - sqlClear: fmt.Sprintf("DELETE FROM %s;", cfg.Table), + sqlReset: fmt.Sprintf("DELETE FROM %s;", cfg.Table), sqlGC: fmt.Sprintf("DELETE FROM %s WHERE e <= ?", cfg.Table), } @@ -142,12 +142,17 @@ func (s *Storage) Delete(key string) error { return err } -// Clear all keys -func (s *Storage) Clear() error { - _, err := s.db.Exec(s.sqlClear) +// Reset all keys +func (s *Storage) Reset() error { + _, err := s.db.Exec(s.sqlReset) return err } +// Close the database +func (s *Storage) Close() error { + return s.db.Close() +} + // Garbage collector to delete expired keys func (s *Storage) gc() { tick := time.NewTicker(s.gcInterval) diff --git a/mysql/mysql_test.go b/mysql/mysql_test.go index cf80a154..8b155112 100644 --- a/mysql/mysql_test.go +++ b/mysql/mysql_test.go @@ -12,7 +12,7 @@ var testStore = New(Config{ Database: os.Getenv("MYSQL_DATABASE"), Username: os.Getenv("MYSQL_USERNAME"), Password: os.Getenv("MYSQL_PASSWORD"), - Clear: true, + Reset: true, }) func Test_MYSQL_Set(t *testing.T) { @@ -110,7 +110,7 @@ func Test_MYSQL_Clear(t *testing.T) { err = testStore.Set("john2", val, 0) utils.AssertEqual(t, nil, err) - err = testStore.Clear() + err = testStore.Reset() utils.AssertEqual(t, nil, err) result, err := testStore.Get("john1") diff --git a/postgres/README.md b/postgres/README.md index 3a22d6ed..6e745281 100644 --- a/postgres/README.md +++ b/postgres/README.md @@ -18,7 +18,7 @@ var ErrNotExist = errors.New("key does not exist") func (s *Storage) Get(key string) ([]byte, error) func (s *Storage) Set(key string, val []byte, exp time.Duration) error func (s *Storage) Delete(key string) error -func (s *Storage) Clear() error +func (s *Storage) Reset() error ``` ### Installation Postgres is tested on the 2 last [Go versions](https://golang.org/dl/) with support for modules. So make sure to initialize one first if you didn't do that yet: @@ -47,7 +47,7 @@ store := postgres.New(postgres.Config{ Port: 5432, Database: "fiber", Table: "fiber_storage", - Clear: false, + Reset: false, GCInterval: 10 * time.Second, }) ``` @@ -86,10 +86,10 @@ type Config struct { // Optional. Default is "fiber_storage" Table string - // Clear any existing keys in existing Table + // Reset clears any existing keys in existing Table // // Optional. Default is false - Clear bool + Reset bool // Time before deleting expired keys // @@ -105,7 +105,7 @@ var ConfigDefault = Config{ Port: 5432, Database: "fiber", Table: "fiber_storage", - Clear: false, + Reset: false, GCInterval: 10 * time.Second, } ``` diff --git a/postgres/config.go b/postgres/config.go index 689446d8..1eea3816 100644 --- a/postgres/config.go +++ b/postgres/config.go @@ -36,10 +36,10 @@ type Config struct { // Optional. Default is "fiber_storage" Table string - // Clear any existing keys in existing Table + // Reset clears any existing keys in existing Table // // Optional. Default is false - Clear bool + Reset bool // Time before deleting expired keys // @@ -89,7 +89,7 @@ var ConfigDefault = Config{ Port: 5432, Database: "fiber", Table: "fiber_storage", - Clear: false, + Reset: false, GCInterval: 10 * time.Second, maxOpenConns: 100, maxIdleConns: 100, diff --git a/postgres/postgres.go b/postgres/postgres.go index b44ac67a..aacee212 100644 --- a/postgres/postgres.go +++ b/postgres/postgres.go @@ -19,7 +19,7 @@ type Storage struct { sqlSelect string sqlInsert string sqlDelete string - sqlClear string + sqlReset string sqlGC string } @@ -77,7 +77,7 @@ func New(config ...Config) *Storage { } // Drop table if set to true - if cfg.Clear { + if cfg.Reset { if _, err = db.Exec(fmt.Sprintf(dropQuery, cfg.Table)); err != nil { _ = db.Close() panic(err) @@ -100,7 +100,7 @@ func New(config ...Config) *Storage { sqlSelect: fmt.Sprintf(`SELECT v, e FROM %s WHERE k=$1;`, cfg.Table), sqlInsert: fmt.Sprintf("INSERT INTO %s (k, v, e) VALUES ($1, $2, $3) ON CONFLICT (k) DO UPDATE SET v = $4, e = $5", cfg.Table), sqlDelete: fmt.Sprintf("DELETE FROM %s WHERE k=$1", cfg.Table), - sqlClear: fmt.Sprintf("DELETE FROM %s;", cfg.Table), + sqlReset: fmt.Sprintf("DELETE FROM %s;", cfg.Table), sqlGC: fmt.Sprintf("DELETE FROM %s WHERE e <= $1", cfg.Table), } @@ -156,12 +156,17 @@ func (s *Storage) Delete(key string) error { return err } -// Clear all entries, including unexpired -func (s *Storage) Clear() error { - _, err := s.db.Exec(s.sqlClear) +// Reset all entries, including unexpired +func (s *Storage) Reset() error { + _, err := s.db.Exec(s.sqlReset) return err } +// Close the database +func (s *Storage) Close() error { + return s.db.Close() +} + // GC deletes all expired entries func (s *Storage) gc() { tick := time.NewTicker(s.gcInterval) diff --git a/postgres/postgres_test.go b/postgres/postgres_test.go index b9806ae1..5c93c2e9 100644 --- a/postgres/postgres_test.go +++ b/postgres/postgres_test.go @@ -12,7 +12,7 @@ var testStore = New(Config{ Database: os.Getenv("POSTGRES_DATABASE"), Username: os.Getenv("POSTGRES_USERNAME"), Password: os.Getenv("POSTGRES_PASSWORD"), - Clear: true, + Reset: true, }) func Test_Postgres_Set(t *testing.T) { @@ -110,7 +110,7 @@ func Test_Postgres_Clear(t *testing.T) { err = testStore.Set("john2", val, 0) utils.AssertEqual(t, nil, err) - err = testStore.Clear() + err = testStore.Reset() utils.AssertEqual(t, nil, err) result, err := testStore.Get("john1") diff --git a/redis/README.md b/redis/README.md index f425ae5a..46009e62 100644 --- a/redis/README.md +++ b/redis/README.md @@ -18,7 +18,7 @@ var ErrNotExist = errors.New("key does not exist") func (s *Storage) Get(key string) ([]byte, error) func (s *Storage) Set(key string, val []byte, exp time.Duration) error func (s *Storage) Delete(key string) error -func (s *Storage) Clear() error +func (s *Storage) Reset() error ``` ### Installation Redis is tested on the 2 last [Go versions](https://golang.org/dl/) with support for modules. So make sure to initialize one first if you didn't do that yet: @@ -48,7 +48,7 @@ store := redis.New(redis.Config{ Username: "", Password: "", Database: 0, - Clear: false, + Reset: false, }) ``` @@ -80,10 +80,10 @@ type Config struct { // Optional. Default is 0 Database int - // Clear any existing keys in existing Collection + // Reset clears any existing keys in existing Collection // // Optional. Default is false - Clear bool + Reset bool } ``` @@ -96,6 +96,6 @@ var ConfigDefault = Config{ Username: "", Password: "", Database: 0, - Clear: false, + Reset: false, } ``` diff --git a/redis/config.go b/redis/config.go index 1d3e09d9..e70f995d 100644 --- a/redis/config.go +++ b/redis/config.go @@ -27,10 +27,10 @@ type Config struct { // Optional. Default is 0 Database int - // Clear any existing keys in existing Collection + // Reset clears any existing keys in existing Collection // // Optional. Default is false - Clear bool + Reset bool //////////////////////////////////// // Adaptor related config options // @@ -46,7 +46,7 @@ var ConfigDefault = Config{ Username: "", Password: "", Database: 0, - Clear: false, + Reset: false, } // Helper function to set default values diff --git a/redis/redis.go b/redis/redis.go index 86497adb..920ddde8 100644 --- a/redis/redis.go +++ b/redis/redis.go @@ -36,7 +36,7 @@ func New(config ...Config) *Storage { } // Empty collection if Clear is true - if cfg.Clear { + if cfg.Reset { if err := db.FlushDB(context.Background()).Err(); err != nil { panic(err) } @@ -71,7 +71,12 @@ func (s *Storage) Delete(key string) error { return s.db.Del(context.Background(), key).Err() } -// Clear all keys -func (s *Storage) Clear() error { +// Reset all keys +func (s *Storage) Reset() error { return s.db.FlushDB(context.Background()).Err() } + +// Close the database +func (s *Storage) Close() error { + return s.db.Close() +} diff --git a/redis/redis_test.go b/redis/redis_test.go index 1c9cf51b..08b79216 100644 --- a/redis/redis_test.go +++ b/redis/redis_test.go @@ -8,7 +8,7 @@ import ( ) var testStore = New(Config{ - Clear: true, + Reset: true, }) func Test_Redis_Set(t *testing.T) { @@ -105,7 +105,7 @@ func Test_Redis_Clear(t *testing.T) { err = testStore.Set("john2", val, 0) utils.AssertEqual(t, nil, err) - err = testStore.Clear() + err = testStore.Reset() utils.AssertEqual(t, nil, err) result, err := testStore.Get("john1") diff --git a/sqlite3/README.md b/sqlite3/README.md index 3e1db077..4483b917 100644 --- a/sqlite3/README.md +++ b/sqlite3/README.md @@ -18,7 +18,7 @@ var ErrNotExist = errors.New("key does not exist") func (s *Storage) Get(key string) ([]byte, error) func (s *Storage) Set(key string, val []byte, exp time.Duration) error func (s *Storage) Delete(key string) error -func (s *Storage) Clear() error +func (s *Storage) Reset() error ``` ### Installation SQLite3 is tested on the 2 last [Go versions](https://golang.org/dl/) with support for modules. So make sure to initialize one first if you didn't do that yet: @@ -45,7 +45,7 @@ store := sqlite3.New() store := sqlite3.New(sqlite3.Config{ Database: "./fiber.sqlite3", Table: "fiber_storage", - Clear: false, + Reset: false, GCInterval: 10 * time.Second, }) ``` @@ -63,10 +63,10 @@ type Config struct { // Optional. Default is "fiber_storage" Table string - // Clear any existing keys in existing Table + // Reset clears any existing keys in existing Table // // Optional. Default is false - Clear bool + Reset bool // Time before deleting expired keys // @@ -80,7 +80,7 @@ type Config struct { var ConfigDefault = Config{ Database: "./fiber.sqlite3", Table: "fiber_storage", - Clear: false, + Reset: false, GCInterval: 10 * time.Second, } ``` diff --git a/sqlite3/config.go b/sqlite3/config.go index d6c72c8a..0b1f893b 100644 --- a/sqlite3/config.go +++ b/sqlite3/config.go @@ -14,10 +14,10 @@ type Config struct { // Optional. Default is "fiber_storage" Table string - // Clear any existing keys in existing Table + // Reset clears any existing keys in existing Table // // Optional. Default is false - Clear bool + Reset bool // Time before deleting expired keys // @@ -38,7 +38,7 @@ var ConfigDefault = Config{ // General config options Database: "./fiber.sqlite3", Table: "fiber_storage", - Clear: false, + Reset: false, GCInterval: 10 * time.Second, // Adaptor related config options diff --git a/sqlite3/sqlite3.go b/sqlite3/sqlite3.go index 4262e0a0..a61d1bdc 100644 --- a/sqlite3/sqlite3.go +++ b/sqlite3/sqlite3.go @@ -19,7 +19,7 @@ type Storage struct { sqlSelect string sqlInsert string sqlDelete string - sqlClear string + sqlReset string sqlGC string } @@ -60,7 +60,7 @@ func New(config ...Config) *Storage { } // Drop table if set to true - if cfg.Clear { + if cfg.Reset { if _, err = db.Exec(fmt.Sprintf(dropQuery, cfg.Table)); err != nil { _ = db.Close() panic(err) @@ -83,7 +83,7 @@ func New(config ...Config) *Storage { sqlSelect: fmt.Sprintf(`SELECT v, e FROM %s WHERE k=?;`, cfg.Table), sqlInsert: fmt.Sprintf("INSERT OR REPLACE INTO %s (k, v, e) VALUES (?,?,?)", cfg.Table), sqlDelete: fmt.Sprintf("DELETE FROM %s WHERE k=?", cfg.Table), - sqlClear: fmt.Sprintf("DELETE FROM %s;", cfg.Table), + sqlReset: fmt.Sprintf("DELETE FROM %s;", cfg.Table), sqlGC: fmt.Sprintf("DELETE FROM %s WHERE e <= ?", cfg.Table), } @@ -135,12 +135,17 @@ func (s *Storage) Delete(key string) error { return err } -// Clear all entries, including unexpired -func (s *Storage) Clear() error { - _, err := s.db.Exec(s.sqlClear) +// Reset all entries, including unexpired +func (s *Storage) Reset() error { + _, err := s.db.Exec(s.sqlReset) return err } +// Close the database +func (s *Storage) Close() error { + return s.db.Close() +} + // GC deletes all expired entries func (s *Storage) gc() { tick := time.NewTicker(s.gcInterval) diff --git a/sqlite3/sqlite3_test.go b/sqlite3/sqlite3_test.go index b45acc93..e5e49301 100644 --- a/sqlite3/sqlite3_test.go +++ b/sqlite3/sqlite3_test.go @@ -9,7 +9,7 @@ import ( ) var testStore = New(Config{ - Clear: true, + Reset: true, }) func Test_SQLite3_Set(t *testing.T) { @@ -107,7 +107,7 @@ func Test_SQLite3_Clear(t *testing.T) { err = testStore.Set("john2", val, 0) utils.AssertEqual(t, nil, err) - err = testStore.Clear() + err = testStore.Reset() utils.AssertEqual(t, nil, err) result, err := testStore.Get("john1") diff --git a/storage.go b/storage.go index 9d6d2624..1b3c9191 100644 --- a/storage.go +++ b/storage.go @@ -19,6 +19,9 @@ type Storage interface { // The key must not be "". Delete(key string) error - // Clear storage - Clear() error + // Reset the storage + Reset() error + + // Close the storage + Close() error }