public DslDataQuery ToQuery([NotNull] string dslQuery) { if (string.IsNullOrEmpty(dslQuery)) { throw new ArgumentNullException(nameof(dslQuery)); } return(_dslParser.DataQueryParse(dslQuery)); }
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)); }
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); }