implement DeleteMany()

This commit is contained in:
xEricL
2024-04-06 14:05:41 -04:00
parent 93f7a52890
commit c93cef290e
2 changed files with 54 additions and 0 deletions

View File

@@ -36,6 +36,32 @@ func (s *Storage) DeleteBucket(bucket string) error {
return err
}
// DeleteMany entries by keys.
func (s *Storage) DeleteMany(keys ...string) error {
if len(keys) <= 0 {
return nil
}
var objects []types.ObjectIdentifier
for _, k := range keys {
objects = append(objects, types.ObjectIdentifier{
Key: aws.String(k),
})
}
ctx, cancel := s.requestContext()
defer cancel()
_, err := s.svc.DeleteObjects(ctx, &s3.DeleteObjectsInput{
Bucket: &s.bucket,
Delete: &types.Delete{
Objects: objects,
},
})
return err
}
// SetWithChecksum sets key with value and checksum.
//
// Currently 4 algorithms are supported:

View File

@@ -18,6 +18,34 @@ func Test_S3_CreateDeleteBucket(t *testing.T) {
require.NoError(t, err)
}
func Test_S3_DeleteMany(t *testing.T) {
val := []byte("doe")
err := testStore.Set("john1", val, 0)
require.NoError(t, err)
err = testStore.Set("john2", val, 0)
require.NoError(t, err)
err = testStore.Set("john3", val, 0)
require.NoError(t, err)
err = testStore.DeleteMany("john1", "john2")
require.NoError(t, err)
result, err := testStore.Get("john1")
require.NoError(t, err)
require.Zero(t, len(result))
result, err = testStore.Get("john2")
require.NoError(t, err)
require.Zero(t, len(result))
result, err = testStore.Get("john3")
require.NoError(t, err)
require.Equal(t, val, result)
}
func Test_S3_SetWithChecksum(t *testing.T) {
var (
key = "set-with-checksum"