diff --git a/candycache.go b/candycache.go index d8d9db0..0c2aeb6 100644 --- a/candycache.go +++ b/candycache.go @@ -3,13 +3,20 @@ package candycache import ( "encoding/json" "errors" - "fmt" "io" "reflect" "sync" "time" ) +// JSON структура для создания/загрузки дампов + +type Dump struct { + Key string `json:"key"` + DestroyTimestamp int64 `json:"destroyTimestamp"` + Data interface{} `json:"data"` +} + // Структура виде ключ-значение для возвращения списка элементов кэша с их ключами. type KeyItemPair struct { Key string @@ -202,11 +209,7 @@ func (c *Cache) Save(w io.Writer) error { encoder := json.NewEncoder(w) first := true for key, item := range c.storage { - entry := struct { - Key string `json:"key"` - DestroyTimestamp int64 `json:"destroyTimestamp"` - Data interface{} `json:"data"` - }{ + entry := Dump{ Key: key, DestroyTimestamp: item.destroyTimestamp, Data: item.data, @@ -239,18 +242,11 @@ func (c *Cache) Load(r io.Reader) error { decoder := json.NewDecoder(r) if _, err := decoder.Token(); err != nil { - if err == io.EOF { - return fmt.Errorf("файл пустой или имеет неправильный формат") - } return err } for decoder.More() { - var entry struct { - Key string `json:"key"` - DestroyTimestamp int64 `json:"destroyTimestamp"` - Data interface{} `json:"data"` - } + entry := Dump{} if err := decoder.Decode(&entry); err != nil { return err