batchdelete to datastore

This commit is contained in:
Will Assis
2025-11-12 15:44:04 -03:00
parent 821c553132
commit cd15d73e32
2 changed files with 57 additions and 0 deletions
+21
View File
@@ -449,6 +449,27 @@ func (d *dataStore) Delete(ctx context.Context, key DataKey) error {
return d.kv.Delete(ctx, dataSection, key.String())
}
func (n *dataStore) BatchDelete(ctx context.Context, keys []DataKey) error {
for len(keys) > 0 {
batch := keys
if len(batch) > dataBatchSize {
batch = batch[:dataBatchSize]
}
keys = keys[len(batch):]
stringKeys := make([]string, len(batch))
for _, dataKey := range batch {
stringKeys = append(stringKeys, dataKey.String())
}
if err := n.kv.BatchDelete(ctx, dataSection, stringKeys); err != nil {
return err
}
}
return nil
}
// ParseKey parses a string key into a DataKey struct
func ParseKey(key string) (DataKey, error) {
parts := strings.Split(key, "/")
@@ -2950,6 +2950,42 @@ func TestDataStore_getGroupResources(t *testing.T) {
}
}
func TestDataStore_BatchDelete(t *testing.T) {
ds := setupTestDataStore(t)
ctx := context.Background()
keys := make([]DataKey, 95)
for i := 0; i < 95; i++ {
rv := node.Generate().Int64()
keys[i] = DataKey{
Namespace: "test-namespace",
Group: "test-group",
Resource: "test-resource",
Name: fmt.Sprintf("test-name-%d", i),
ResourceVersion: rv,
Action: DataActionCreated,
Folder: "test-folder",
}
content := fmt.Sprintf("test-value-%d", i)
err := ds.Save(ctx, keys[i], bytes.NewReader([]byte(content)))
require.NoError(t, err)
}
err := ds.BatchDelete(ctx, keys)
require.NoError(t, err)
// Verify all events were deleted
for i := 0; i < 95; i++ {
_, err := ds.Get(ctx, DataKey{
Namespace: "test-namespace",
Group: "test-group",
Resource: "test-resource",
Name: fmt.Sprintf("test-name-%d", i),
})
require.Error(t, err, "Resource should have been deleted")
}
}
func TestDataStore_BatchGet(t *testing.T) {
ds := setupTestDataStore(t)
ctx := context.Background()