Exemplo n.º 1
0
 public override void Apply(TransactionalBatch transactionalBatch, PartitionKeyPath partitionKeyPath)
 {
     transactionalBatch.UpsertItemStream(streamPayload, options);
 }
Exemplo n.º 2
0
 public override void Apply(TransactionalBatch transactionalBatch, PartitionKeyPath partitionKeyPath)
 {
     transactionalBatch.ReadItem(id, options);
 }
Exemplo n.º 3
0
 public override void Apply(TransactionalBatch transactionalBatch, PartitionKeyPath partitionKeyPath)
 {
     transactionalBatch.UpsertItem(item, options);
 }
Exemplo n.º 4
0
 public override void Apply(TransactionalBatch transactionalBatch, PartitionKeyPath partitionKeyPath)
 {
     transactionalBatch.PatchItem(id, patchOperations, (TransactionalBatchPatchItemRequestOptions)options);
 }
Exemplo n.º 5
0
 public override void Apply(TransactionalBatch transactionalBatch, PartitionKeyPath partitionKeyPath)
 {
     transactionalBatch.ReplaceItemStream(id, streamPayload, options);
 }
Exemplo n.º 6
0
 internal static async Task ExecuteAndDisposeOperationsAsync <TOperation>(this TransactionalBatch transactionalBatch, Dictionary <int, TOperation> operationMappings, PartitionKeyPath partitionKeyPath, CancellationToken cancellationToken = default)
     where TOperation : IOperation
 {
     try
     {
         await transactionalBatch.ExecuteOperationsAsync(operationMappings, partitionKeyPath, cancellationToken)
         .ConfigureAwait(false);
     }
     finally
     {
         foreach (var operation in operationMappings.Values)
         {
             operation.Dispose();
         }
     }
 }
Exemplo n.º 7
0
        internal static async Task ExecuteOperationsAsync <TOperation>(this TransactionalBatch transactionalBatch, Dictionary <int, TOperation> operationMappings, PartitionKeyPath partitionKeyPath, CancellationToken cancellationToken = default)
            where TOperation : IOperation
        {
            foreach (var operation in operationMappings.Values)
            {
                operation.Apply(transactionalBatch, partitionKeyPath);
            }

            using (var batchOutcomeResponse = await transactionalBatch.ExecuteAsync(cancellationToken).ConfigureAwait(false))
            {
                for (var i = 0; i < batchOutcomeResponse.Count; i++)
                {
                    var result = batchOutcomeResponse[i];

                    operationMappings.TryGetValue(i, out var operation);
                    IOperation operationToBeExecuted = operation ?? ThrowOnConflictOperation.Instance;

                    if (result.IsSuccessStatusCode)
                    {
                        operationToBeExecuted.Success(result);
                        continue;
                    }

                    // guaranteed to throw
                    operationToBeExecuted.Conflict(result);
                }
            }
        }
Exemplo n.º 8
0
        internal static async Task ExecuteOperationAsync(this TransactionalBatch transactionalBatch, IOperation operation, PartitionKeyPath partitionKeyPath, CancellationToken cancellationToken = default)
        {
            operation.Apply(transactionalBatch, partitionKeyPath);

            using (var batchOutcomeResponse = await transactionalBatch.ExecuteAsync(cancellationToken).ConfigureAwait(false))
            {
                if (batchOutcomeResponse.Count > 1)
                {
                    throw new Exception($"The transactional batch was expected to have a single operation but contained {batchOutcomeResponse.Count} operations.");
                }

                var result = batchOutcomeResponse[0];

                if (result.IsSuccessStatusCode)
                {
                    operation.Success(result);
                    return;
                }

                // guaranteed to throw
                operation.Conflict(result);
            }
        }