From 5c4bbe0b58c9133bda162153671b543595b6d242 Mon Sep 17 00:00:00 2001 From: David Allen Date: Tue, 19 Aug 2025 21:33:28 -0600 Subject: [PATCH] feat: added KV storage interface --- pkg/storage/disk.go | 11 +++++++++++ pkg/storage/memory.go | 20 ++++++++++++++++++++ pkg/storage/storage.go | 13 +++++++++++++ 3 files changed, 44 insertions(+) create mode 100644 pkg/storage/disk.go create mode 100644 pkg/storage/memory.go create mode 100644 pkg/storage/storage.go 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 +}