diff options
| author | Pablo M. Bermudo Garay <pablombg@gmail.com> | 2022-02-08 19:45:27 +0100 |
|---|---|---|
| committer | Pablo M. Bermudo Garay <pablombg@gmail.com> | 2022-02-10 13:14:19 +0100 |
| commit | 925d56091daf39aebf1aac41afd47d3279c93984 (patch) | |
| tree | 4ce17e3f14bce441dce3e05470b8ad9b1e50ddd3 | |
| parent | 6601e2eccbe2032e10a20027393db8e84da4b12f (diff) | |
Delete empty buckets
| -rw-r--r-- | objectstore/memory_backend.go | 5 | ||||
| -rw-r--r-- | objectstore/memory_backend_test.go | 10 |
2 files changed, 15 insertions, 0 deletions
diff --git a/objectstore/memory_backend.go b/objectstore/memory_backend.go index 09f7d8a..7dcfe4a 100644 --- a/objectstore/memory_backend.go +++ b/objectstore/memory_backend.go @@ -70,5 +70,10 @@ func (os *MemObjectStore) DeleteObject(bucketId string, objectId string) error { } delete(bucket.objects, objectId) + // Delete the bucket if it's empty + if len(bucket.objects) == 0 { + delete(os.buckets, bucketId) + } + return nil } diff --git a/objectstore/memory_backend_test.go b/objectstore/memory_backend_test.go index 3fc2852..3ac347c 100644 --- a/objectstore/memory_backend_test.go +++ b/objectstore/memory_backend_test.go @@ -47,6 +47,11 @@ func TestCreateAndDelete(t *testing.T) { t.Error("Delete non-existent object. Got nil, want error") } + // Check the number of buckets + if numBuckets := len(objects.buckets); numBuckets != 1 { + t.Errorf("Number of buckets. Got %v, want 1", numBuckets) + } + // Delete the object if err := objects.DeleteObject(bucketId, objectId); err != nil { t.Fatalf("Delete test object: %v", err) @@ -56,4 +61,9 @@ func TestCreateAndDelete(t *testing.T) { if err := objects.DeleteObject(bucketId, objectId); err == nil { t.Error("Delete already deleted object. Got nil, want error") } + + // Re-check the number of buckets + if numBuckets := len(objects.buckets); numBuckets != 0 { + t.Errorf("Number of buckets. Got %v, want 0", numBuckets) + } } |
