This commit is contained in:
BugLesser 2022-12-29 13:43:02 +08:00 committed by GitHub
commit 70c3c63553
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 27 additions and 0 deletions

View File

@ -115,6 +115,20 @@ func (c *cache) Replace(k string, x interface{}, d time.Duration) error {
return nil
}
// Rename for the cache key only if it already exists, and the existing
// item hasn't expired. Returns an error otherwise.
func (c *cache) Rename(oldk, newk string) error {
c.mu.Lock()
defer c.mu.Unlock()
if _, found := c.get(oldk); !found {
return fmt.Errorf("Item %s doesn't exist", oldk)
}
item := c.items[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) {

View File

@ -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("Renamed foo when it shouldn't exist")
}
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)