🧹 introduce reset and close

This commit is contained in:
Fenny
2020-11-06 01:41:46 +01:00
parent 1634e44e61
commit f9a30234b9
28 changed files with 125 additions and 87 deletions

View File

@@ -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)