Пример #1
0
        public override object ExecuteQueryValue(QueryValueRequest request)
        {
            var req = new QueryRequest
            {
                QueryName  = request.QueryName,
                Filters    = request.Filters,
                Columns    = new List <Column>(),
                Orders     = new List <Order>(),
                Pagination = new Pagination.All(),
            };

            if (request.ValueToken == null || request.ValueToken is AggregateToken && ((AggregateToken)request.ValueToken).AggregateFunction == AggregateFunction.Count)
            {
                req.Pagination = new Pagination.Paginate(1, 1);
                req.Columns.Add(new Column(this.EntityColumnFactory().BuildColumnDescription(), QueryName));
                return(Execute(req, GetQueryDescription()).TotalElements.Value);
            }

            else if (request.ValueToken is AggregateToken)
            {
                var parent = request.ValueToken.Parent;
                req.Columns.Add(new Column(parent, parent.NiceName()));
                return(Execute(req, GetQueryDescription()).SimpleAggregate((AggregateToken)request.ValueToken));
            }
            else
            {
                req.Columns.Add(new Column(request.ValueToken, request.ValueToken.NiceName()));
                return(Execute(req, GetQueryDescription()).SelectOne(request.ValueToken).Unique(UniqueType.Single));
            }
        }
 public override async Task <object> ExecuteQueryValueAsync(QueryValueRequest request, CancellationToken token)
 {
     using (TypeAuthLogic.DisableQueryFilter())
     {
         return(await base.ExecuteQueryValueAsync(request, token));
     }
 }
Пример #3
0
        public override async Task <object?> ExecuteQueryValueAsync(QueryValueRequest request, CancellationToken token)
        {
            using (SystemTime.Override(request.SystemTime))
            {
                var query = Query.ToDQueryable(GetQueryDescription())
                            .SelectMany(request.Multiplications)
                            .Where(request.Filters);

                if (request.ValueToken == null)
                {
                    return(await query.Query.CountAsync(token));
                }

                if (request.ValueToken is AggregateToken)
                {
                    return(await query.SimpleAggregateAsync((AggregateToken)request.ValueToken, token));
                }

                if (request.MultipleValues)
                {
                    return(await query.SelectOne(request.ValueToken).ToListAsync(token));
                }

                return(await query.SelectOne(request.ValueToken).UniqueAsync(UniqueType.SingleOrDefault, token));
            }
        }
Пример #4
0
        public static QueryValueRequest ToRequest(this QueryCountOptions options)
        {
            QueryDescription qd = GetQueryDescription(options.QueryName);

            FilterOption.SetFilterTokens(options.FilterOptions, qd);

            var request = new QueryValueRequest
            {
                QueryName = options.QueryName,
                Filters   = options.FilterOptions.Select(f => f.ToFilter()).ToList()
            };

            return(request);
        }
Пример #5
0
        protected internal virtual int QueryCount(CountOptions options)
        {
            var queryDescription = DynamicQueryManager.Current.QueryDescription(options.QueryName);

            FilterOption.SetFilterTokens(options.FilterOptions, queryDescription, canAggregate: false);

            var request = new QueryValueRequest
            {
                QueryName = options.QueryName,
                Filters   = options.FilterOptions.Select(f => f.ToFilter()).ToList()
            };

            return((int)DynamicQueryManager.Current.ExecuteQueryCount(request));
        }
Пример #6
0
        public override async Task<object> ExecuteQueryValueAsync(QueryValueRequest request, CancellationToken token)
        {
            var query = Query.ToDQueryable(GetQueryDescription())
                .SelectMany(request.Multiplications)
                .Where(request.Filters);
            
            if (request.ValueToken == null)
                return await query.Query.CountAsync(token);

            if (request.ValueToken is AggregateToken)
                return await query.SimpleAggregateAsync((AggregateToken)request.ValueToken, token);

            return await query.SelectOne(request.ValueToken).UniqueAsync(UniqueType.Single, token);
        }
Пример #7
0
        public override object ExecuteQueryValue(QueryValueRequest request)
        {
            var query = Query.ToDQueryable(GetQueryDescription())
                .SelectMany(request.Multiplications)
                .Where(request.Filters);

            if (request.ValueToken == null)
                return query.Query.Count();

            if (request.ValueToken is AggregateToken)
                return query.SimpleAggregate((AggregateToken)request.ValueToken);

            return query.SelectOne(request.ValueToken).Unique(UniqueType.Single);
        }
Пример #8
0
    public override async Task <object?> ExecuteQueryValueAsync(QueryValueRequest request, CancellationToken cancellationToken)
    {
        var req = new QueryRequest
        {
            QueryName  = request.QueryName,
            Filters    = request.Filters,
            Columns    = new List <Column>(),
            Orders     = new List <Order>(),
            Pagination = new Pagination.All(),
        };

        if (request.ValueToken == null || request.ValueToken is AggregateToken at && at.AggregateFunction == AggregateFunction.Count)
        {
            req.Pagination = new Pagination.Paginate(1, 1);
            req.Columns.Add(new Column(this.EntityColumnFactory().BuildColumnDescription(), QueryName));
            var result = await Execute(req, GetQueryDescription(), cancellationToken);

            return(result.TotalElements !.Value);
        }
Пример #9
0
        public override object?ExecuteQueryValue(QueryValueRequest request)
        {
            using (SystemTime.Override(request.SystemTime))
            {
                var query = Query.ToDQueryable(GetQueryDescription())
                            .SelectMany(request.Multiplications)
                            .Where(request.Filters);

                if (request.ValueToken == null)
                {
                    return(query.Query.Count());
                }

                if (request.ValueToken is AggregateToken)
                {
                    return(query.SimpleAggregate((AggregateToken)request.ValueToken));
                }

                return(query.SelectOne(request.ValueToken).Unique(UniqueType.SingleOrDefault));
            }
        }
Пример #10
0
 public Task <object?> ExecuteQueryValueAsync(QueryValueRequest request, CancellationToken token)
 {
     return(ExecuteAsync(ExecuteType.ExecuteQueryValue, request.QueryName, request, dqb => dqb.Core.Value.ExecuteQueryValueAsync(request, token)));
 }
Пример #11
0
 public object?ExecuteQueryValue(QueryValueRequest request)
 {
     return(Execute(ExecuteType.ExecuteQueryValue, request.QueryName, request, dqb => dqb.Core.Value.ExecuteQueryValue(request)));
 }
Пример #12
0
 public override object?ExecuteQueryValue(QueryValueRequest request) => Task.Run(() => ExecuteQueryValueAsync(request, CancellationToken.None));
Пример #13
0
 public virtual int ExecuteQueryCount(QueryValueRequest request)
 {
     return(Return(MethodInfo.GetCurrentMethod(), request.QueryName.ToString(),
                   () => (int)QueryLogic.Queries.ExecuteQueryCount(request)));
 }
Пример #14
0
 private static void QueryCountBatch(this QueryValueRequest request, Action <int> onResult, Action @finally)
 {
     Finder.Manager.AssertFindable(request.QueryName);
     Enqueue(request, obj => onResult((int)obj), @finally);
 }
Пример #15
0
 public static int QueryCount(this QueryValueRequest request)
 {
     Finder.Manager.AssertFindable(request.QueryName);
     return(Server.Return((IDynamicQueryServer s) => s.ExecuteQueryCount(request)));
 }
Пример #16
0
 public virtual int ExecuteQueryCount(QueryValueRequest request)
 {
     return(Return(MethodInfo.GetCurrentMethod(), request.QueryName.ToString(),
                   () => (int)DynamicQueryManager.Current.ExecuteQueryCount(request)));
 }