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(); }
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); }
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); }