Example #1
0
        public static GraphQueryBase <TDto> ExtractParams <TDto>(this GraphQueryBase <TDto> request,
                                                                 IResolverContext context)
        {
            var page       = context.Argument <int>("page") <= 0 ? 1 : context.Argument <int>("page");
            var pageSize   = context.Argument <int>("pageSize") <= 0 ? 20 : context.Argument <int>("pageSize");
            var filterExpr = context.GetQueryableFilterExpr <TDto>();
            var sortExpr   = context.GetQueryableSortExpr <TDto>();

            request.Page           = page;
            request.PageSize       = pageSize;
            request.FilterExpr     = filterExpr;
            request.SortingVisitor = sortExpr;

            return(request);
        }
Example #2
0
        public static OffsetPaging <TResult> WithCriterions <TResult>(this IQueryable <TResult> source, GraphQueryBase <TResult> queryBase)
        {
            // filter by GraphQL
            if (queryBase.FilterExpr != null)
            {
                source = source.Where(queryBase.FilterExpr);
            }

            // order_by by GraphQL
            if (queryBase.SortingVisitor != null)
            {
                source = queryBase.SortingVisitor.Sort(source);
            }

            // pagination
            var totalCount = source.Count();

            source = source.Skip((queryBase.Page - 1) * queryBase.PageSize).Take(queryBase.PageSize);

            // build pagination model
            var model = new OffsetPaging <TResult> {
                TotalCount = totalCount, Edges = source.ToList()
            };

            return(model);
        }