Esempio n. 1
0
        private void SetDuplicateCheckExpression(PutItemRequest request, Dictionary <string, AttributeValue> item)
        {
            ExpressionAttributeNames.Clear();
            ExpressionAttributeValues.Clear();
            AttributeGenerator.ResetIndex();

            var hashKeyAttrValue = item.FirstOrDefault(x => x.Key == _hashKeyName).Value;

            if (hashKeyAttrValue == null)
            {
                throw new InvalidOperationException($"Item does not contains Hash key: {_hashKeyName}");
            }

            var sb = new StringBuilder();

            var hashKeyName  = GetAttributeName(_hashKeyName);
            var hashKeyValue = GetAttributeValue(hashKeyAttrValue);

            sb.Append($"{hashKeyName} <> {hashKeyValue}");

            if (!string.IsNullOrEmpty(_sortKeyName))
            {
                var sortKeyAttrValue = item.FirstOrDefault(x => x.Key == _sortKeyName).Value;

                var sortKeyName  = GetAttributeName(_sortKeyName);
                var sortKeyValue = GetAttributeValue(sortKeyAttrValue);

                sb.Append($" AND {sortKeyName} <> {sortKeyValue}");
            }

            request.ExpressionAttributeNames  = ExpressionAttributeNames;
            request.ExpressionAttributeValues = ExpressionAttributeValues;
            request.ConditionExpression       = sb.ToString();
        }
Esempio n. 2
0
        protected override ScanRequest GetRequest()
        {
            var request = new ScanRequest()
            {
                TableName = TableName,
                ExpressionAttributeNames  = ExpressionAttributeNames.ToDictionary(kv => kv.Key, kv => kv.Value),
                ExpressionAttributeValues = ExpressionAttributeValues.ToDictionary(kv => kv.Key, kv => kv.Value),
                FilterExpression          = string.IsNullOrWhiteSpace(FilterExpression) ? null : FilterExpression.Trim(),
                ExclusiveStartKey         = ExclusiveStartKey,
            };

            if (!string.IsNullOrEmpty(IndexName))
            {
                request.IndexName = IndexName;
            }

            return(request);
        }
Esempio n. 3
0
        protected override QueryRequest GetRequest()
        {
            var request = new QueryRequest
            {
                TableName = TableName,
                ExpressionAttributeNames  = ExpressionAttributeNames.ToDictionary(kv => kv.Key, kv => kv.Value),
                ExpressionAttributeValues = ExpressionAttributeValues.ToDictionary(kv => kv.Key, kv => kv.Value),
                ScanIndexForward          = !QueryInfo.OrderDescend,
                FilterExpression          = string.IsNullOrWhiteSpace(FilterExpression) ? null : FilterExpression.Trim(),
                KeyConditionExpression    = HashKey + (SortKey != null ? " AND " + SortKey : string.Empty),
                ExclusiveStartKey         = ExclusiveStartKey,
            };

            if (!string.IsNullOrEmpty(IndexName))
            {
                request.IndexName = IndexName;
            }

            return(request);
        }