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(""); }); }
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)); }
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 }); }
public ProductController(IAutoQueryableContext autoQueryableContext, IAutoQueryableProfile profile) { _autoQueryableContext = autoQueryableContext; _profile = profile; }
// 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 }); }
//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);
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; }