From 9206e39c0b613995096112e0d9f4a0253032e44c Mon Sep 17 00:00:00 2001 From: Bel LaPointe Date: Sun, 7 Feb 2021 13:00:29 -0600 Subject: [PATCH] impl map stream --- db_test.go | 1 + map_stream.go | 28 ++++++++++++++++++++++++++++ 2 files changed, 29 insertions(+) create mode 100755 map_stream.go diff --git a/db_test.go b/db_test.go index b86c3ed..3e3cb8d 100755 --- a/db_test.go +++ b/db_test.go @@ -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) diff --git a/map_stream.go b/map_stream.go new file mode 100755 index 0000000..34ffad6 --- /dev/null +++ b/map_stream.go @@ -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...) +}