Exemplo n.º 1
0
        public void SetParameters(
            AmazonDynamoDBClient client,
            SelectQueryInfo queryInfo,
            ExpressionAttributeName[] expressionAttributeNames,
            ExpressionAttributeValue[] expressionAttributeValues,
            HashKey hashKey,
            SortKey sortKey,
            string hashKeyName,
            string sortKeyName,
            string tableName,
            string indexName,
            string filterExpression
            )
        {
            Client    = client;
            QueryInfo = queryInfo;
            ExpressionAttributeNames  = expressionAttributeNames;
            ExpressionAttributeValues = expressionAttributeValues;
            HashKey          = hashKey;
            SortKey          = sortKey;
            HashKeyName      = hashKeyName;
            SortKeyName      = sortKeyName;
            TableName        = tableName;
            IndexName        = indexName;
            FilterExpression = filterExpression;

            Initialize();
        }
Exemplo n.º 2
0
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!this.IsPostBack)
            {
                this.InitPageLanguage(this.languageComponent1, false);
            }

            _SelectQueryInfo = new SelectQueryInfo(this.Request.Params["Type"], this.Request.Params["Code"], this.Request.Params["Desc"]);
        }
Exemplo n.º 3
0
        public static async Task <IDataProvider> CreateAsync(QueryContext context, SelectQueryInfo queryInfo, CancellationToken cancellationToken)
        {
            if (queryInfo.TableSource is AtomTableSource)
            {
                var provider = new ApiDataProvider(context, queryInfo);
                provider.Command = context.Command;
                await provider.InitializeAsync(cancellationToken);

                return(provider);
            }

            // TODO: If column contains derived column (expression column is not supported yet)
            if (queryInfo.Columns.Any(column => column is PropertyColumn || column is StarColumn))
            {
                throw new InvalidOperationException("Cannot provide data. Source is not defined.");
            }

            return(new EmptyDataProvider());
        }
Exemplo n.º 4
0
        protected static IProcessor GetProcessor(SelectQueryInfo queryInfo)
        {
            if (queryInfo.Columns.FirstOrDefault() is StarColumn)
            {
                return(new StarProcessor());
            }

            if (queryInfo.Columns.All(c => c is PropertyColumn))
            {
                return(new ColumnProcessor(queryInfo.Columns.Select(c => c as PropertyColumn)));
            }

            if (queryInfo.Columns.FirstOrDefault() is CountFunctionColumn countFunctionColumn)
            {
                return(new CountFunctionProcessor(countFunctionColumn.Alias));
            }

            throw new NotSupportedException("Not supported column type");
        }
Exemplo n.º 5
0
        public static SelectQueryInfo VisitQuerySpecification(QuerySpecificationContext context)
        {
            var queryInfo = new SelectQueryInfo();

            var fromClause = context.fromClause();

            if (context.selectSpec() != null)
            {
                if (context.selectSpec().STRONGLY() != null)
                {
                    queryInfo.UseStronglyConsistent = true;
                }
            }

            queryInfo.Columns = VisitSelectElements(context.selectElements());

            if (fromClause == null)
            {
                queryInfo.TableSource = null;
            }
            else
            {
                queryInfo.TableSource = VisitTableSource(fromClause.tableSource());

                if (fromClause.whereExpr != null)
                {
                    queryInfo.WhereExpression = ExpressionVisitor.VisitExpression(fromClause.whereExpr);
                }
            }

            if (context.orderClause() != null)
            {
                if (queryInfo.WhereExpression == null)
                {
                    throw new NotSupportedException("DynamoDB Not support ORDER clause without condition expression.");
                }

                if (context.orderClause().DESC() != null)
                {
                    queryInfo.OrderDescend = true;
                }
            }

            if (context.limitClause() != null)
            {
                var limitClause = context.limitClause();

                if (int.TryParse(limitClause.limit.GetText(), out int limit))
                {
                    queryInfo.Limit = limit;
                }

                if (limitClause.offset != null)
                {
                    if (int.TryParse(limitClause.offset.GetText(), out int offset))
                    {
                        queryInfo.Offset = offset;
                    }
                }
            }

            if (context.startKeyClause() != null)
            {
                var startKeyClause = context.startKeyClause();

                queryInfo.StartHashKey = ExpressionVisitor.VisitConstant(startKeyClause.hashKey);

                if (startKeyClause.sortKey != null)
                {
                    queryInfo.StartSortKey = ExpressionVisitor.VisitConstant(startKeyClause.sortKey);
                }
            }

            return(queryInfo);
        }
Exemplo n.º 6
0
 public ApiDataProvider(QueryContext context, SelectQueryInfo queryInfo)
 {
     Context   = context;
     QueryInfo = queryInfo;
 }