diff --git a/storage/db.go b/storage/db.go index 297b84f..3fa5168 100644 --- a/storage/db.go +++ b/storage/db.go @@ -1,6 +1,11 @@ package storage -import "local/rproxy3/storage/packable" +import ( + "errors" + "local/rproxy3/storage/packable" +) + +var ErrNotFound = errors.New("not found") type DB interface { Get(string, string, packable.Packable) error diff --git a/storage/map.go b/storage/map.go index 29ce921..659795e 100644 --- a/storage/map.go +++ b/storage/map.go @@ -1,7 +1,6 @@ package storage import ( - "errors" "fmt" "local/rproxy3/storage/packable" ) @@ -46,7 +45,7 @@ func (m Map) Get(ns, key string, value packable.Packable) error { m[ns] = make(map[string][]byte) } if _, ok := m[ns][key]; !ok { - return errors.New("not found") + return ErrNotFound } return value.Decode(m[ns][key]) } @@ -55,6 +54,12 @@ func (m Map) Set(ns, key string, value packable.Packable) error { if _, ok := m[ns]; !ok { m[ns] = make(map[string][]byte) } + if value == nil { + if _, ok := m[ns][key]; ok { + delete(m[ns], key) + } + return nil + } b, err := value.Encode() if err != nil { return err