Example #1
0
 private static void ApplyOptions <TModel>(ODataQueryOptions <TModel> options, QuerySettings querySettings)
 {
     options.AddExpandOptionsResult();
     if (querySettings?.ODataSettings?.PageSize.HasValue == true)
     {
         options.AddNextLinkOptionsResult(querySettings.ODataSettings.PageSize.Value);
     }
 }
Example #2
0
        /// <summary>
        /// GetAsync
        /// </summary>
        /// <typeparam name="TModel"></typeparam>
        /// <typeparam name="TData"></typeparam>
        /// <param name="query"></param>
        /// <param name="mapper"></param>
        /// <param name="options"></param>
        /// <param name="querySettings"></param>
        /// <returns></returns>
        public static async Task <ICollection <TModel> > GetAsync <TModel, TData>(this IQueryable <TData> query, IMapper mapper, ODataQueryOptions <TModel> options, QuerySettings querySettings = null)
            where TModel : class
        {
            Expression <Func <TModel, bool> > filter = options.Filter.ToFilterExpression <TModel>(querySettings?.ODataSettings?.HandleNullPropagation ?? HandleNullPropagationOption.Default);
            await query.ApplyOptionsAsync(mapper, filter, options, querySettings);

            return(await query.GetAsync
                   (
                       mapper,
                       filter,
                       options.GetQueryableExpression(querySettings?.ODataSettings),
                       options.SelectExpand.GetIncludes().BuildIncludes <TModel>().ToList(),
                       querySettings?.AsyncSettings
                   ));
        }
Example #3
0
 private static void ApplyOptions <TModel, TData>(this IQueryable <TData> query, IMapper mapper, Expression <Func <TModel, bool> > filter, ODataQueryOptions <TModel> options, QuerySettings querySettings)
 {
     ApplyOptions(options, querySettings);
     if (options.Count?.Value == true)
     {
         options.AddCountOptionsResult(query.QueryLongCount(mapper, filter));
     }
 }
Example #4
0
 private static async Task ApplyOptionsAsync <TModel, TData>(this IQueryable <TData> query, IMapper mapper, Expression <Func <TModel, bool> > filter, ODataQueryOptions <TModel> options, QuerySettings querySettings)
 {
     ApplyOptions(options, querySettings);
     if (options.Count?.Value == true)
     {
         options.AddCountOptionsResult(await query.QueryLongCountAsync(mapper, filter, querySettings?.AsyncSettings?.CancellationToken ?? default));
     }
 }
Example #5
0
        /// <summary>
        /// GetQuery
        /// </summary>
        /// <typeparam name="TModel"></typeparam>
        /// <typeparam name="TData"></typeparam>
        /// <param name="query"></param>
        /// <param name="mapper"></param>
        /// <param name="options"></param>
        /// <param name="querySettings"></param>
        /// <returns></returns>
        public static IQueryable <TModel> GetQuery <TModel, TData>(this IQueryable <TData> query, IMapper mapper, ODataQueryOptions <TModel> options, QuerySettings querySettings = null)
            where TModel : class
        {
            Expression <Func <TModel, bool> > filter = options.Filter.ToFilterExpression <TModel>(querySettings?.ODataSettings?.HandleNullPropagation ?? HandleNullPropagationOption.False);

            query.ApplyOptions(mapper, filter, options, querySettings);
            return(query.GetQueryable(mapper, options, querySettings, filter));
        }
        public static ICollection <TModel> Get <TModel, TData>(this IQueryable <TData> query, IMapper mapper, ODataQueryOptions <TModel> options, QuerySettings querySettings = null)
            where TModel : class
        {
            Expression <Func <TModel, bool> > filter = options.Filter.ToFilterExpression <TModel>(querySettings?.ODataSettings?.HandleNullPropagation ?? HandleNullPropagationOption.False);

            query.ApplyOptions(mapper, filter, options, querySettings);
            return(query.Get
                   (
                       mapper,
                       filter,
                       options.GetQueryableExpression(querySettings?.ODataSettings),
                       options.SelectExpand.GetIncludes().BuildIncludesExpressionCollection <TModel>()?.ToList()
                   ));
        }
 public static async Task <ICollection <TModel> > GetAsync <TModel, TData>(this IQueryable <TData> query, IMapper mapper, ODataQueryOptions <TModel> options, QuerySettings querySettings = null)
     where TModel : class
 => await query.GetAsync(mapper, options, querySettings?.ODataSettings?.HandleNullPropagation ?? HandleNullPropagationOption.Default);
 /// <summary>
 /// Get
 /// </summary>
 /// <typeparam name="TModel"></typeparam>
 /// <typeparam name="TData"></typeparam>
 /// <param name="query"></param>
 /// <param name="mapper"></param>
 /// <param name="options"></param>
 /// <param name="querySettings"></param>
 /// <returns></returns>
 public static ICollection <TModel> Get <TModel, TData>(this IQueryable <TData> query, IMapper mapper, ODataQueryOptions <TModel> options, QuerySettings querySettings)
     where TModel : class
 => query.Get(mapper, options, querySettings?.ODataSettings?.HandleNullPropagation ?? HandleNullPropagationOption.Default);
        /// <summary>
        /// GetQueryAsync
        /// </summary>
        /// <typeparam name="TModel"></typeparam>
        /// <typeparam name="TData"></typeparam>
        /// <param name="query"></param>
        /// <param name="mapper"></param>
        /// <param name="options"></param>
        /// <param name="querySettings"></param>
        /// <returns></returns>
        public static async Task <IQueryable <TModel> > GetQueryAsync <TModel, TData>(this IQueryable <TData> query, IMapper mapper, ODataQueryOptions <TModel> options, QuerySettings querySettings = null)
            where TModel : class
        {
            var expansions = options.SelectExpand.GetExpansions(typeof(TModel));
            List <Expression <Func <TModel, object> > > includeExpressions = expansions.Select(list => new List <Expansion>(list)).BuildIncludes <TModel>
                                                                             (
                options.SelectExpand.GetSelects()
                                                                             )
                                                                             .ToList();

            Expression <Func <TModel, bool> > filter = options.Filter.ToFilterExpression <TModel>(querySettings?.ODataSettings?.HandleNullPropagation ?? HandleNullPropagationOption.Default);
            Expression <Func <IQueryable <TModel>, IQueryable <TModel> > > queryableExpression = options.GetQueryableExpression();
            Expression <Func <IQueryable <TModel>, long> > countExpression = LinqExtensions.GetCountExpression <TModel>(filter);

            options.AddExpandOptionsResult();
            if (options.Count?.Value == true)
            {
                options.AddCountOptionsResult <TModel, TData>(await query.QueryAsync(mapper, countExpression));
            }

            IQueryable <TModel> queryable = await query.GetQueryAsync(mapper, filter, queryableExpression, includeExpressions, querySettings?.ProjectionSettings);

            return(queryable.UpdateQueryableExpression(expansions));
        }