Пример #1
0
        public async Task <ResultTable> FindRowsLike([Required, FromBody] AutocompleteQueryRequestTS request, CancellationToken token)
        {
            var qn = QueryLogic.ToQueryName(request.queryKey);
            var qd = QueryLogic.Queries.QueryDescription(qn);

            var dqRequest = new DQueryableRequest
            {
                QueryName = qn,
                Columns   = request.columns.EmptyIfNull().Select(a => a.ToColumn(qd, false)).ToList(),
                Filters   = request.filters.EmptyIfNull().Select(a => a.ToFilter(qd, false)).ToList(),
                Orders    = request.orders.EmptyIfNull().Select(a => a.ToOrder(qd, false)).ToList()
            };

            var dqueryable = QueryLogic.Queries.GetDQueryable(dqRequest);
            var entityType = qd.Columns.Single(a => a.IsEntity).Implementations !.Value.Types.SingleEx();

            var result = await dqueryable.Query.AutocompleteUntypedAsync(dqueryable.Context.GetEntitySelector(), request.subString, request.count, entityType, token);

            var columnAccessors = dqRequest.Columns.Select(c => (
                                                               column: c,
                                                               lambda: Expression.Lambda(c.Token.BuildExpression(dqueryable.Context), dqueryable.Context.Parameter)
                                                               )).ToList();

            return(DQueryable.ToResultTable(result.ToArray(), columnAccessors, null, new Pagination.Firsts(request.count)));
        }
Пример #2
0
        public override DQueryable <object> GetDQueryable(DQueryableRequest request)
        {
            request.Columns.Insert(0, new _EntityColumn(EntityColumnFactory().BuildColumnDescription(), QueryName));

            DQueryable <T> query = Query
                                   .ToDQueryable(GetQueryDescription())
                                   .SelectMany(request.Multiplications)
                                   .OrderBy(request.Orders)
                                   .Where(request.Filters)
                                   .Select(request.Columns)
                                   .TryTake(request.Count);

            return(new DQueryable <object>(query.Query, query.Context));
        }
Пример #3
0
 public DQueryable <object> GetDQueryable(DQueryableRequest request)
 {
     return(Execute(ExecuteType.GetDQueryable, request.QueryName, null, dqb => dqb.Core.Value.GetDQueryable(request)));
 }
Пример #4
0
 public override DQueryable <object> GetDQueryable(DQueryableRequest request)
 {
     throw new NotImplementedException();
 }