diff --git a/pkg/storage/disk.go b/pkg/storage/disk.go new file mode 100644 index 0000000..0a17cef --- /dev/null +++ b/pkg/storage/disk.go @@ -0,0 +1,11 @@ +package storage + +type DiskStorage struct{} + +func (ds *DiskStorage) Read(k string) error { + return nil +} + +func (ms *DiskStorage) Write(k string, v any) error { + return nil +} diff --git a/pkg/storage/memory.go b/pkg/storage/memory.go new file mode 100644 index 0000000..d3890c5 --- /dev/null +++ b/pkg/storage/memory.go @@ -0,0 +1,20 @@ +package storage + +import "fmt" + +type MemoryStorage struct { + Data map[string]any +} + +func (ms *MemoryStorage) Read(k string) (any, error) { + v, ok := ms.Data[k] + if ok { + return v, nil + } + return nil, fmt.Errorf("value does not exist") +} + +func (ms *MemoryStorage) Write(k string, v any) error { + ms.Data[k] = v + return nil +} diff --git a/pkg/storage/storage.go b/pkg/storage/storage.go new file mode 100644 index 0000000..28f437b --- /dev/null +++ b/pkg/storage/storage.go @@ -0,0 +1,13 @@ +package storage + +type KVStore interface { + Get(k string) (any, error) + Set(k string, v any) error + GetData() any +} + +type KVStaticStore[T any] interface { + Get(k string) (T, error) + Set(k string, v T) error + GetData() T +}