diff --git a/cache.go b/cache.go index db88d2f..51f1876 100644 --- a/cache.go +++ b/cache.go @@ -115,6 +115,18 @@ func (c *cache) Replace(k string, x interface{}, d time.Duration) error { return nil } +func (c *cache) Rename(oldk, newk string) error { + c.mu.Lock() + defer c.mu.Unlock() + item, found := c.get(oldk) + if !found { + return fmt.Errorf("Item %s doesn't exist", oldk) + } + delete(c.items, oldk) + c.items[newk] = item + return nil +} + // Get an item from the cache. Returns the item or nil, and a bool indicating // whether the key was found. func (c *cache) Get(k string) (interface{}, bool) { diff --git a/cache_test.go b/cache_test.go index de3e9d6..3146ad7 100644 --- a/cache_test.go +++ b/cache_test.go @@ -1137,6 +1137,19 @@ func TestReplace(t *testing.T) { } } +func TestRename(t *testing.T) { + tc := New(DefaultExpiration, 0) + err := tc.Rename("foo", "bar") + if err != nil { + t.Error(err) + } + tc.Set("foo", 123, DefaultExpiration) + err = tc.Rename("foo", "bar") + if err != nil { + t.Error(err) + } +} + func TestDelete(t *testing.T) { tc := New(DefaultExpiration, 0) tc.Set("foo", "bar", DefaultExpiration)