diff --git a/pkg/modules/keyvalue/keyvalue.go b/pkg/modules/keyvalue/keyvalue.go index 5474b0993..19a109c8a 100644 --- a/pkg/modules/keyvalue/keyvalue.go +++ b/pkg/modules/keyvalue/keyvalue.go @@ -21,6 +21,7 @@ import ( "code.vikunja.io/api/pkg/modules/keyvalue/memory" ) +// Storage defines an interface for saving key-value pairs type Storage interface { Put(key string, value interface{}) (err error) Get(key string) (value interface{}, err error) @@ -29,18 +30,22 @@ type Storage interface { var store Storage +// InitStorage initializes the configured storage backend func InitStorage() { store = memory.NewStorage() } +// Put puts a value in the storage backend func Put(key string, value interface{}) error { return store.Put(key, value) } +// Get returns a value from a storage backend func Get(key string) (value interface{}, err error) { return store.Get(key) } +// Del removes a save value from a storage backend func Del(key string) (err error) { return store.Del(key) } diff --git a/pkg/modules/keyvalue/memory/memory.go b/pkg/modules/keyvalue/memory/memory.go index 2c253733a..aacf3a57b 100644 --- a/pkg/modules/keyvalue/memory/memory.go +++ b/pkg/modules/keyvalue/memory/memory.go @@ -19,17 +19,20 @@ package memory import "sync" +// Storage is the memory implementation of a storage backend type Storage struct { store map[string]interface{} mutex sync.Mutex } +// NewStorage creates a new memory storage func NewStorage() *Storage { s := &Storage{} s.store = make(map[string]interface{}) return s } +// Put puts a value into the memory storage func (s *Storage) Put(key string, value interface{}) (err error) { s.mutex.Lock() defer s.mutex.Unlock() @@ -37,12 +40,14 @@ func (s *Storage) Put(key string, value interface{}) (err error) { return nil } +// Get retrieves a saved value from memory storage func (s *Storage) Get(key string) (value interface{}, err error) { s.mutex.Lock() defer s.mutex.Unlock() return s.store[key], nil } +// Del removes a saved value from a memory storage func (s *Storage) Del(key string) (err error) { s.mutex.Lock() defer s.mutex.Unlock()