Exemplo n.º 1
0
        public DslDataQuery ToQuery([NotNull] string dslQuery)
        {
            if (string.IsNullOrEmpty(dslQuery))
            {
                throw new ArgumentNullException(nameof(dslQuery));
            }

            return(_dslParser.DataQueryParse(dslQuery));
        }
Exemplo n.º 2
0
        private object Execute(string query, KeyValuePair <string, string>[] parameters,
                               Action <DslDataQuery> exprVerificator)
        {
            var parametrizedQuery = ApplyQueryParameters(query, parameters);

            var expr = _parser.DataQueryParse(parametrizedQuery);

            exprVerificator(expr);

            return(ExecuteExpr(expr));
        }
Exemplo n.º 3
0
        private QueryResult ExecutePlainTextQuery(long?userId, Queries query, KeyValuePair <string, string>[] parameters)
        {
            userId = userId ?? _userPrincipal.Info.Id;

            var queryResult = new QueryResult();

            using (var telemetryScope = _telemetryScopeProvider.Create <Queries>(TelemetryOperationNames.Query.Execute))
            {
                telemetryScope.SetEntity(query);

                try
                {
                    var queryText = ApplyQueryParameters(query.Query, parameters);

                    var queryExpr = _dslParser.DataQueryParse(queryText);

                    queryResult.Columns = _dslDataQueryEvaluator.Evaluate(queryExpr, userId.Value);

                    queryResult.Items = _queryBuilder.ExecuteTable(queryExpr).ToArray();                     // generalize array

                    telemetryScope.WriteSuccess();
                }
                catch (DataQueryCompilationException ex)
                {
                    telemetryScope.WriteException(ex);

                    queryResult.Exceptions = ex.Errors
                                             .Select(
                        _ => new QueryException
                    {
                        Message = $"{_.Item1}: {_.Item2}"
                    });
                }
                catch (Exception ex)
                {
                    telemetryScope.WriteException(ex);

                    queryResult.Exceptions = new[]
                    {
                        new QueryException
                        {
                            Message    = ex.Message,
                            StackTrace = ex.StackTrace
                        }
                    };
                }
            }

            return(queryResult);
        }