impl map stream

master
Bel LaPointe 2021-02-07 13:00:29 -06:00
parent dcf1594e17
commit 9206e39c0b
2 changed files with 29 additions and 0 deletions

View File

@ -58,6 +58,7 @@ func TestImplementations(t *testing.T) {
cases := make([]DB, 0)
cases = append(cases, &mock{m: make(map[string][]byte)})
cases = append(cases, NewMap())
cases = append(cases, NewMapStream())
if cacheMem, err := NewCache(); err != nil {
t.Errorf("cannot make cache/mem: %v", err)

28
map_stream.go Executable file
View File

@ -0,0 +1,28 @@
package storage
import (
"bytes"
"io"
"io/ioutil"
)
type MapStream struct {
*Map
}
func NewMapStream() *MapStream {
return &MapStream{NewMap()}
}
func (m *MapStream) GetStream(key string, ns ...string) (io.Reader, error) {
b, err := m.Get(key, ns...)
return bytes.NewReader(b), err
}
func (m *MapStream) SetStream(key string, r io.Reader, ns ...string) error {
b, err := ioutil.ReadAll(r)
if err != nil {
return err
}
return m.Set(key, b, ns...)
}