package cache import ( "encoding/json" "io" ) type memoryCache struct { data map[string][]byte } var _ Cache = &memoryCache{} func NewMemoryCache() (Cache, error) { return &memoryCache{ data: make(map[string][]byte), }, nil } func (m *memoryCache) Get(key string, writer io.Writer) error { data, ok := m.data[key] if ok { _, err := writer.Write(data) return err } return ErrNotFound } func (m *memoryCache) GetString(key string) (string, error) { data, ok := m.data[key] if ok { return string(data), nil } return "", ErrNotFound } func (m *memoryCache) GetJSON(key string, value interface{}) error { data, ok := m.data[key] if ok { return json.Unmarshal(data, value) } return ErrNotFound } func (m *memoryCache) Set(key string, value io.Reader) error { data, err := io.ReadAll(value) if err != nil { return err } m.data[key] = data return nil } func (m *memoryCache) SetJSON(key string, value interface{}) error { data, err := json.Marshal(value) if err != nil { return err } m.data[key] = data return nil } func (m *memoryCache) SetString(key string, value string) error { m.data[key] = []byte(value) return nil } func (m *memoryCache) Delete(key string) error { delete(m.data, key) return nil }