refactor: cache interface
parent
2bf75aaa29
commit
6b5766144c
|
@ -24,7 +24,7 @@ type EC2Client interface {
|
||||||
|
|
||||||
type ec2Repository struct {
|
type ec2Repository struct {
|
||||||
client ec2iface.EC2API
|
client ec2iface.EC2API
|
||||||
cache *cache.Cache
|
cache cache.Cache
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewEC2Repository(session *session.Session) *ec2Repository {
|
func NewEC2Repository(session *session.Session) *ec2Repository {
|
||||||
|
|
|
@ -1,20 +1,27 @@
|
||||||
package cache
|
package cache
|
||||||
|
|
||||||
import "sync"
|
import (
|
||||||
|
"sync"
|
||||||
|
)
|
||||||
|
|
||||||
type Cache struct {
|
type Cache interface {
|
||||||
|
Set(string, interface{}) bool
|
||||||
|
Get(string) interface{}
|
||||||
|
}
|
||||||
|
|
||||||
|
type Store struct {
|
||||||
mu *sync.RWMutex
|
mu *sync.RWMutex
|
||||||
store map[string]interface{}
|
store map[string]interface{}
|
||||||
}
|
}
|
||||||
|
|
||||||
func New() *Cache {
|
func New() Cache {
|
||||||
return &Cache{
|
return &Store{
|
||||||
mu: &sync.RWMutex{},
|
mu: &sync.RWMutex{},
|
||||||
store: map[string]interface{}{},
|
store: map[string]interface{}{},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Cache) Set(key string, value interface{}) (overridden bool) {
|
func (c *Store) Set(key string, value interface{}) (overridden bool) {
|
||||||
c.mu.Lock()
|
c.mu.Lock()
|
||||||
defer c.mu.Unlock()
|
defer c.mu.Unlock()
|
||||||
if _, ok := c.store[key]; ok {
|
if _, ok := c.store[key]; ok {
|
||||||
|
@ -24,7 +31,7 @@ func (c *Cache) Set(key string, value interface{}) (overridden bool) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Cache) Get(key string) interface{} {
|
func (c *Store) Get(key string) interface{} {
|
||||||
c.mu.RLock()
|
c.mu.RLock()
|
||||||
defer c.mu.RUnlock()
|
defer c.mu.RUnlock()
|
||||||
return c.store[key]
|
return c.store[key]
|
||||||
|
|
Loading…
Reference in New Issue