Commit 8ee9ee99 authored by Daniel Smith's avatar Daniel Smith

add ListKeys method to Store

parent 3fe17b93
...@@ -37,6 +37,7 @@ type Store interface { ...@@ -37,6 +37,7 @@ type Store interface {
Update(obj interface{}) error Update(obj interface{}) error
Delete(obj interface{}) error Delete(obj interface{}) error
List() []interface{} List() []interface{}
ListKeys() []string
Get(obj interface{}) (item interface{}, exists bool, err error) Get(obj interface{}) (item interface{}, exists bool, err error)
GetByKey(key string) (item interface{}, exists bool, err error) GetByKey(key string) (item interface{}, exists bool, err error)
...@@ -195,6 +196,18 @@ func (c *cache) List() []interface{} { ...@@ -195,6 +196,18 @@ func (c *cache) List() []interface{} {
return list return list
} }
// ListKeys returns a list of all the keys of the objects currently
// in the cache.
func (c *cache) ListKeys() []string {
c.lock.RLock()
defer c.lock.RUnlock()
list := make([]string, 0, len(c.items))
for key := range c.items {
list = append(list, key)
}
return list
}
// Index returns a list of items that match on the index function // Index returns a list of items that match on the index function
// Index is thread-safe so long as you treat all items as immutable // Index is thread-safe so long as you treat all items as immutable
func (c *cache) Index(indexName string, obj interface{}) ([]interface{}, error) { func (c *cache) Index(indexName string, obj interface{}) ([]interface{}, error) {
......
...@@ -49,6 +49,7 @@ func (u *UndeltaStore) Add(obj interface{}) error { ...@@ -49,6 +49,7 @@ func (u *UndeltaStore) Add(obj interface{}) error {
u.PushFunc(u.ActualStore.List()) u.PushFunc(u.ActualStore.List())
return nil return nil
} }
func (u *UndeltaStore) Update(obj interface{}) error { func (u *UndeltaStore) Update(obj interface{}) error {
if err := u.ActualStore.Update(obj); err != nil { if err := u.ActualStore.Update(obj); err != nil {
return err return err
...@@ -56,6 +57,7 @@ func (u *UndeltaStore) Update(obj interface{}) error { ...@@ -56,6 +57,7 @@ func (u *UndeltaStore) Update(obj interface{}) error {
u.PushFunc(u.ActualStore.List()) u.PushFunc(u.ActualStore.List())
return nil return nil
} }
func (u *UndeltaStore) Delete(obj interface{}) error { func (u *UndeltaStore) Delete(obj interface{}) error {
if err := u.ActualStore.Delete(obj); err != nil { if err := u.ActualStore.Delete(obj); err != nil {
return err return err
...@@ -63,15 +65,23 @@ func (u *UndeltaStore) Delete(obj interface{}) error { ...@@ -63,15 +65,23 @@ func (u *UndeltaStore) Delete(obj interface{}) error {
u.PushFunc(u.ActualStore.List()) u.PushFunc(u.ActualStore.List())
return nil return nil
} }
func (u *UndeltaStore) List() []interface{} { func (u *UndeltaStore) List() []interface{} {
return u.ActualStore.List() return u.ActualStore.List()
} }
func (u *UndeltaStore) ListKeys() []string {
return u.ActualStore.ListKeys()
}
func (u *UndeltaStore) Get(obj interface{}) (item interface{}, exists bool, err error) { func (u *UndeltaStore) Get(obj interface{}) (item interface{}, exists bool, err error) {
return u.ActualStore.Get(obj) return u.ActualStore.Get(obj)
} }
func (u *UndeltaStore) GetByKey(key string) (item interface{}, exists bool, err error) { func (u *UndeltaStore) GetByKey(key string) (item interface{}, exists bool, err error) {
return u.ActualStore.GetByKey(key) return u.ActualStore.GetByKey(key)
} }
func (u *UndeltaStore) Replace(list []interface{}) error { func (u *UndeltaStore) Replace(list []interface{}) error {
if err := u.ActualStore.Replace(list); err != nil { if err := u.ActualStore.Replace(list); err != nil {
return err return err
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment