Esempio n. 1
0
        public ProductModule(AutoQueryableDbContext dbContext, IAutoQueryableContext autoQueryableContext, NancyQueryStringAccessor queryStringAccessor, NancyContext nancyContext) : base("/products")
        {
            queryStringAccessor.SetQueryString(nancyContext.Request.Url.Query);

            Get <dynamic>("/", args => Response.AsJson(dbContext.Product.AutoQueryable(autoQueryableContext).ToAutoQueryListResult(autoQueryableContext) as ICollection <object>));

            Get <dynamic>("/withfilter", args =>
            {
                After.AutoQueryable(Context, dbContext.Product, autoQueryableContext);
                return("");
            });
        }
Esempio n. 2
0
        public BaseTypeTest()
        {
            _profile             = new AutoQueryableProfile();
            _queryStringAccessor = new SimpleQueryStringAccessor();
            var selectClauseHandler   = new DefaultSelectClauseHandler();
            var orderByClauseHandler  = new DefaultOrderByClauseHandler();
            var wrapWithClauseHandler = new DefaultWrapWithClauseHandler();
            var clauseMapManager      = new ClauseMapManager(selectClauseHandler, orderByClauseHandler, wrapWithClauseHandler);
            var clauseValueManager    = new ClauseValueManager(selectClauseHandler, orderByClauseHandler, wrapWithClauseHandler);
            var criteriaFilterManager = new CriteriaFilterManager();

            _autoQueryableContext = new AutoQueryableContext(_profile, new AutoQueryHandler(_queryStringAccessor, criteriaFilterManager, clauseMapManager, clauseValueManager));
        }
Esempio n. 3
0
        public FilterTest()
        {
            var settings = new AutoQueryableSettings();

            _profile             = new AutoQueryableProfile(settings);
            _queryStringAccessor = new SimpleQueryStringAccessor();
            var selectClauseHandler     = new DefaultSelectClauseHandler();
            var orderByClauseHandler    = new DefaultOrderByClauseHandler();
            var wrapWithClauseHandler   = new DefaultWrapWithClauseHandler();
            var clauseMapManager        = new ClauseMapManager(selectClauseHandler, orderByClauseHandler, wrapWithClauseHandler);
            var clauseValueManager      = new ClauseValueManager(selectClauseHandler, orderByClauseHandler, wrapWithClauseHandler, _profile);
            var criteriaFilterManager   = new CriteriaFilterManager();
            var defaultAutoQueryHandler = new AutoQueryHandler(_queryStringAccessor, criteriaFilterManager, clauseMapManager, clauseValueManager, _profile);

            _autoQueryableContext = new AutoQueryableContext(defaultAutoQueryHandler);
        }
 public AutoQueryableFilter(IAutoQueryableContext autoQueryableContext, IAutoQueryableProfile autoQueryableProfile)
 {
     _autoQueryableContext = autoQueryableContext;
     _autoQueryableProfile = autoQueryableProfile;
 }
        // TODO: Implement WrapWith
        public static async Task <dynamic> ToAutoQueryListResultAsync <TEntity>(this IQueryable <TEntity> query, IAutoQueryableContext context) where TEntity : class
        {
            var result = await query.ToListAsyncSafe();

            //if (!context.ClauseValueManager.Page.HasValue || context.ClauseValueManager.Page.Value == 0)
            //{
            //    return result;
            //}

            return(new PagedResult <TEntity>
            {
                TotalCount = context.TotalCountQuery != null ? await context.TotalCountQuery.CountAsyncSafe() : result.Count,
                RowCount = result.Count,
                Result = result
            });
        }
Esempio n. 6
0
 public ProductController(IAutoQueryableContext autoQueryableContext, IAutoQueryableProfile profile)
 {
     _autoQueryableContext = autoQueryableContext;
     _profile = profile;
 }
Esempio n. 7
0
        // TODO: Implement WrapWith
        public static dynamic ToAutoQueryListResult <TEntity>(this IQueryable <TEntity> query, IAutoQueryableContext context) where TEntity : class
        {
            if (!context.ClauseValueManager.WrapWith.Any())
            {
                return(query.ToList());
            }
            if (context.ClauseValueManager.First)
            {
                return(query.FirstOrDefault());
            }
            var result = query.ToList();

            //if (!context.ClauseValueManager.Page.HasValue || context.ClauseValueManager.Page.Value == 0)
            //{
            //    return result;
            //}

            return(new PagedResult <TEntity>
            {
                TotalCount = context.TotalCountQuery?.Count() ?? result.Count,
                RowCount = result.Count,
                Values = result
            });
        }
Esempio n. 8
0
        //public static IQueryable<object> AutoQueryable(this IQueryable<object> query, IAutoQueryableContext context) => context.GetAutoQuery(query);

        public static dynamic AutoQueryable <TEntity>(this IQueryable <TEntity> query, IAutoQueryableContext context) where TEntity : class => context.GetAutoQuery(query);
Esempio n. 9
0
 public static void AutoQueryable(this AfterPipeline afterPipeline, NancyContext context, IQueryable <dynamic> query, IAutoQueryableContext autoQueryableContext)
 {
     context.Items.Add("autoqueryable-query", query);
     afterPipeline += ctx =>
     {
         if (query == null)
         {
             throw new Exception("Unable to retrieve value of IQueryable from context result.");
         }
         ctx.Response.Contents = stream =>
         {
             using (var writer = new StreamWriter(stream))
             {
                 var result = query.AutoQueryable(autoQueryableContext).ToAutoQueryListResult(autoQueryableContext);
                 writer.Write(JsonConvert.SerializeObject(result));
             }
         };
     };
 }
 public AutoQueryable(IAutoQueryableContext autoQueryableContext)
 {
     _autoQueryableContext = autoQueryableContext;
 }