From a30c96160333edb002e5b1cc18ef20b07ddc78ee Mon Sep 17 00:00:00 2001 From: "Pablo M. Bermudo Garay" Date: Mon, 7 Feb 2022 22:43:32 +0100 Subject: Initial commit Basic in-memory object store. --- objectstore/memory_backend.go | 58 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 objectstore/memory_backend.go (limited to 'objectstore/memory_backend.go') 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") + } +} -- cgit v1.2.3-70-g09d2