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);
                }
Example #2
0
        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);
            }