예제 #1
0
        public DynamoQuery Filter(params Expression[] conditions)
        {
            if (_filter == null)
            {
                if (ExpressionAttributeNames == null)
                {
                    ExpressionAttributeNames = new JsonObject();
                }
                if (ExpressionAttributeValues == null)
                {
                    ExpressionAttributeValues = new AttributeCollection();
                }

                _filter = new DynamoExpression(ExpressionAttributeNames, ExpressionAttributeValues);
            }

            foreach (var condition in conditions)
            {
                _filter.Add(condition);
            }

            this.FilterExpression = _filter.Text;

            return(this);
        }
예제 #2
0
        public static DynamoExpression FromExpression(Expression expression)
        {
            var result = new DynamoExpression();

            result.Add(expression);

            return(result);
        }
예제 #3
0
        public static DynamoExpression FromExpression(Expression expression)
        {
            var result = new DynamoExpression();

            // TODO: Flatten conjunctions...

            result.Add(expression);

            return(result);
        }
예제 #4
0
        public DynamoQueryExpression(string[] keyNames, Expression[] expressions)
        {
            this.keyNames = keyNames;

            KeyExpression = new DynamoExpression(AttributeNames, AttributeValues);

            foreach (var expression in expressions)
            {
                if (expression is BinaryExpression)
                {
                    var e = (BinaryExpression)expression;

                    if (IsKey(e.Left.ToString()))
                    {
                        KeyExpression.Add(e);
                    }
                    else
                    {
                        AddFilterExpression(e);
                    }
                }
                else if (expression is BetweenExpression)
                {
                    var e = (BetweenExpression)expression;

                    if (IsKey(e.Property.ToString()))
                    {
                        KeyExpression.Add(e);
                    }
                    else
                    {
                        AddFilterExpression(e);
                    }
                }
                else
                {
                    throw new Exception("Unexpected expression type:" + expression);
                }
            }
        }
예제 #5
0
        // TODO: Expand BinaryExpression

        public DynamoQueryExpression(string[] keyNames, Expression[] expressions)
        {
            this.keyNames = keyNames;

            KeyExpression = new DynamoExpression(AttributeNames, AttributeValues);

            foreach (Expression expression in expressions)
            {
                if (expression is BinaryExpression be)
                {
                    if (IsKey(be.Left.ToString() !))
                    {
                        KeyExpression.Add(be);
                    }
                    else
                    {
                        AddFilterExpression(be);
                    }
                }