Пример #1
0
 internal void AddRequestHandler(AmazonDynamoDBRequest request, bool isAsync)
 {
     ((Amazon.Runtime.Internal.IAmazonWebServiceRequest)request).AddBeforeRequestHandler(isAsync ?
                                                                                         new RequestEventHandler(this.UserAgentRequestEventHandlerAsync) :
                                                                                         new RequestEventHandler(this.UserAgentRequestEventHandlerSync)
                                                                                         );
 }
Пример #2
0
        public IEnumerable <T> Query <T>(AmazonDynamoDBRequest query)
        {
            var queryResult = base.GetDynamo()
                              .QueryAsync((QueryRequest)query)
                              .Result;

            return(queryResult
                   .Items
                   .Select(x => x.Map <T>())
                   .ToList());
        }
Пример #3
0
        public void Execute(AmazonDynamoDBRequest dynamoRequest)
        {
            var item = new TransactWriteItem();

            if (dynamoRequest is UpdateItemRequest)
            {
                item.Update = ((UpdateItemRequest)dynamoRequest).Convert();
            }
            if (dynamoRequest is PutItemRequest)
            {
                item.Put = ((PutItemRequest)dynamoRequest).Convert();
            }
            if (dynamoRequest is DeleteItemRequest)
            {
                item.Delete = ((DeleteItemRequest)dynamoRequest).Convert();
            }

            _transactionItems.Add(item);
        }
Пример #4
0
 public RequestWrapper(AmazonDynamoDBClient mDynamoDB, AmazonDynamoDBRequest req)
 {
     this.mDynamoDB = mDynamoDB;
     this.mReq      = req;
 }
Пример #5
0
        public override int ExecuteNonQuery(ServiceCursorDef cursorDef, IDataParameterCollection parms, CommandBehavior behavior)
        {
            Initialize();
            Query query = cursorDef.Query as Query;

            Dictionary <string, AttributeValue> values = new Dictionary <string, AttributeValue>();

            if (parms.Count > 0)
            {
                for (int i = 0; i < parms.Count; i++)
                {
                    ServiceParameter parm = parms[i] as ServiceParameter;
                    DynamoDBHelper.GXToDynamoQueryParameter("", values, parm);
                }
            }
            var pattern = @"\((.*) = :(.*)\)";
            Dictionary <string, AttributeValue> keyCondition = new Dictionary <string, AttributeValue>();
            List <string> filters = new List <string>();

            foreach (var keyFilter in query.Filters)
            {
                var    match   = Regex.Match(keyFilter, pattern);
                String varName = match.Groups[2].Value;
                if (match.Groups.Count > 1)
                {
                    keyCondition[match.Groups[1].Value] = values[varName];
                }
            }
            AmazonDynamoDBRequest request = null;

            switch (query.CursorType)
            {
            case ServiceCursorDef.CursorType.Select:
                throw new NotImplementedException();

            case ServiceCursorDef.CursorType.Delete:
                request = new DeleteItemRequest()
                {
                    TableName = query.TableName,
                    Key       = keyCondition
                };
                mDynamoDB.DeleteItem((DeleteItemRequest)request);

                break;

            case ServiceCursorDef.CursorType.Insert:
                request = new PutItemRequest
                {
                    TableName = query.TableName,
                    Item      = values
                };
                mDynamoDB.PutItem((PutItemRequest)request);
                break;

            case ServiceCursorDef.CursorType.Update:
                request = new UpdateItemRequest
                {
                    TableName        = query.TableName,
                    Key              = keyCondition,
                    AttributeUpdates = ToAttributeUpdates(keyCondition, values)
                };
                mDynamoDB.UpdateItem((UpdateItemRequest)request);
                break;

            default:
                break;
            }

            return(0);
        }
Пример #6
0
 private static void CreateDynamoQuery(Query query, Dictionary <string, AttributeValue> values, String[] queryFilters, out DynamoDBDataReader dataReader, out AmazonDynamoDBRequest req)
 {
     dataReader = null;
     req        = null;
     if (query is Scan)
     {
         req = new ScanRequest
         {
             TableName            = query.TableName,
             ProjectionExpression = String.Join(",", query.Projection),
         };
         if (queryFilters.Length > 0)
         {
             ((ScanRequest)req).FilterExpression          = String.Join(" AND ", queryFilters);
             ((ScanRequest)req).ExpressionAttributeValues = values;
         }
     }
     else
     {
         req = new QueryRequest
         {
             TableName = query.TableName,
             KeyConditionExpression    = String.Join(" AND ", query.Filters),
             ExpressionAttributeValues = values,
             ProjectionExpression      = String.Join(",", query.Projection),
         };
     }
 }