Example #1
0
        public async Task <UpdateItemResult> UpdateItemUsingRetryPolicyAsync(UpdateItemRequest request, RetryPolicy retryPolicy)
        {
            var retryCount = 0;

            Exception lastException;

            do
            {
                if (retryCount > 0)
                {
                    await Task.Delay(retryPolicy.GetDelay(retryCount)).ConfigureAwait(false);
                }
                try
                {
                    return(await UpdateItemAsync(request).ConfigureAwait(false));
                }
                catch (DynamoDbException ex) when(ex.IsTransient)
                {
                    lastException = ex;
                }

                retryCount++;
            } while (retryPolicy.ShouldRetry(retryCount));

            throw lastException;
        }
Example #2
0
        // Conditional patch
        public Task <UpdateItemResult> PatchAsync(Key <T> key,
                                                  IList <Change> changes,
                                                  Expression[] conditions,
                                                  ReturnValues?returnValues = null)
        {
            #region Preconditions

            if (changes == null)
            {
                throw new ArgumentNullException(nameof(changes));
            }

            if (conditions == null)
            {
                throw new ArgumentNullException(nameof(conditions));
            }

            #endregion

            var request = new UpdateItemRequest(tableName, key, changes)
            {
                ReturnValues = returnValues
            };

            if (conditions.Length > 0)
            {
                request.SetConditions(conditions);
            }

            return(client.UpdateItemWithRetryPolicy(request, retryPolicy));
        }
Example #3
0
        public async Task <UpdateItemResult> UpdateItemAsync(UpdateItemRequest request)
        {
            var httpRequest = Setup("UpdateItem", request.ToJson());

            var json = await SendAndReadJsonElementAsync(httpRequest).ConfigureAwait(false);

            return(UpdateItemResult.FromJsonElement(json));
        }
Example #4
0
        public Task <UpdateItemResult> PatchAsync(Key <T> key, IList <Change> changes, ReturnValues returnValues)
        {
            var request = new UpdateItemRequest(tableName, key, changes)
            {
                ReturnValues = returnValues
            };

            return(client.UpdateItemWithRetryPolicy(request, retryPolicy));
        }
Example #5
0
        public async Task <UpdateItemResult> UpdateItemAsync(UpdateItemRequest request)
        {
            var httpRequest = Setup("UpdateItem", request.ToJson());

            var responseText = await SendAsync(httpRequest).ConfigureAwait(false);

            var responseJson = JsonObject.Parse(responseText);

            return(UpdateItemResult.FromJson(responseJson));
        }
Example #6
0
        // Conditional patch
        public Task <UpdateItemResult> PatchAsync(
            Key <T> key,
            Change[] changes,
            Expression[] conditions,
            ReturnValues?returnValues = null)
        {
            var request = new UpdateItemRequest(tableName, key, changes, conditions, returnValues);

            return(client.UpdateItemUsingRetryPolicyAsync(request, retryPolicy));
        }
Example #7
0
        public async Task <UpdateItemResult> PatchAsync(Key <T> key, params Change[] changes)
        {
            #region Preconditions

            if (changes == null)
            {
                throw new ArgumentNullException(nameof(changes));
            }

            #endregion

            var request = new UpdateItemRequest(tableName, key, changes);

            return(await client.UpdateItemWithRetryPolicy(request, retryPolicy).ConfigureAwait(false));
        }
Example #8
0
        public async Task <UpdateItemResult> UpdateItemWithRetryPolicy(UpdateItemRequest request, RetryPolicy retryPolicy)
        {
            var       retryCount = 0;
            Exception lastError  = null;

            while (retryPolicy.ShouldRetry(retryCount))
            {
                try
                {
                    return(await UpdateItem(request).ConfigureAwait(false));
                }
                catch (DynamoDbException ex) when(ex.IsTransient)
                {
                    lastError = ex;
                }

                retryCount++;

                await Task.Delay(retryPolicy.GetDelay(retryCount)).ConfigureAwait(false);
            }

            throw lastError;
        }
Example #9
0
        public Task <UpdateItemResult> PatchAsync(Key <T> key, Change[] changes, ReturnValues returnValues)
        {
            var request = new UpdateItemRequest(tableName, key, changes, returnValues: returnValues);

            return(client.UpdateItemUsingRetryPolicyAsync(request, retryPolicy));
        }
Example #10
0
        public async Task <UpdateItemResult> PatchAsync(Key <T> key, params Change[] changes)
        {
            var request = new UpdateItemRequest(tableName, key, changes);

            return(await client.UpdateItemUsingRetryPolicyAsync(request, retryPolicy).ConfigureAwait(false));
        }