diff options
| author | Pablo M. Bermudo Garay <pablombg@gmail.com> | 2022-02-07 22:43:32 +0100 |
|---|---|---|
| committer | Pablo M. Bermudo Garay <pablombg@gmail.com> | 2022-02-10 13:14:04 +0100 |
| commit | a30c96160333edb002e5b1cc18ef20b07ddc78ee (patch) | |
| tree | 0d360a51a1ade7b35789a86fc58f1e6e307c6ff6 /objectstore/memory_backend.go | |
Initial commit
Basic in-memory object store.
Diffstat (limited to 'objectstore/memory_backend.go')
| -rw-r--r-- | objectstore/memory_backend.go | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/objectstore/memory_backend.go b/objectstore/memory_backend.go new file mode 100644 index 0000000..a21abca --- /dev/null +++ b/objectstore/memory_backend.go @@ -0,0 +1,58 @@ +// Basic in-memory object store +// +// Licensed under CC0 1.0 Universal: +// https://creativecommons.org/publicdomain/zero/1.0/legalcode +package objectstore + +import "fmt" + +type memBucket struct { + objects map[string]string +} + +type MemObjectStore struct { + buckets map[string]memBucket +} + +func NewMemBackend() *MemObjectStore { + os := &MemObjectStore{} + os.buckets = make(map[string]memBucket) + return os +} + +func (os *MemObjectStore) CreateObject(bucketId string, objectId string, object string) { + if bucket, ok := os.buckets[bucketId]; ok { + bucket.objects[objectId] = object + } else { + bucket := memBucket{} + bucket.objects = make(map[string]string) + + bucket.objects[objectId] = object + os.buckets[bucketId] = bucket + } +} + +func (os *MemObjectStore) GetObject(bucketId string, objectId string) (string, error) { + if bucket, ok := os.buckets[bucketId]; ok { + if object, ok := bucket.objects[objectId]; ok { + return object, nil + } else { + return "", fmt.Errorf("Object not found") + } + } else { + return "", fmt.Errorf("Bucket not found") + } +} + +func (os *MemObjectStore) DeleteObject(bucketId string, objectId string) error { + if bucket, ok := os.buckets[bucketId]; ok { + if _, ok := bucket.objects[objectId]; ok { + delete(bucket.objects, objectId) + return nil + } else { + return fmt.Errorf("Object not found") + } + } else { + return fmt.Errorf("Bucket not found") + } +} |
