static async Task DeleteItemRelations(IAmazonDynamoDB client, string tableName, Guid ownerId, Guid scoreId, HashSet <string> items) { var partitionKey = DynamoDbScoreItemRelationUtils.ConvertToPartitionKey(ownerId); var score = ScoreDatabaseUtils.ConvertToBase64(scoreId); const int chunkSize = 25; var chunkList = items.Select((x, index) => (x, index)) .GroupBy(x => x.index / chunkSize) .Select(x => x.Select(y => y.x).ToArray()) .ToArray(); foreach (var ids in chunkList) { await DeleteItemRelations25Async(client, tableName, partitionKey, score, ids); }
public async Task DeleteItemRelationsAsync(Guid ownerId, Guid snapshotId, Guid[] itemIds) { const int chunkSize = 25; var partitionKey = DynamoDbScoreItemRelationUtils.ConvertToPartitionKey(ownerId); var snapshot = ScoreDatabaseUtils.ConvertToBase64(snapshotId); var chunkList = itemIds .Select((x, index) => (x: ScoreDatabaseUtils.ConvertToBase64(x) + snapshot, index)) .GroupBy(x => x.index / chunkSize) .Select(x => x.Select(y => y.x).ToArray()) .ToArray(); foreach (var ids in chunkList) { await DeleteData25Async(_dynamoDbClient, ScoreItemRelationTableName, partitionKey, ids); }