public static IQueryable <T> Sift <T>( [NotNull] this IQueryable <T> query, [NotNull] ISifterService sifter, [NotNull] SifterModel sifterModel ) { return(sifter.Sift(query, sifterModel)); }
public IQueryable <T> Sift <T>(IQueryable <T> query, SifterModel model) { query = applySortTerms(query, model.GetSortTerms()); query = applyFilterTerms(query, model.GetFilterTerms()); query = model.GetPaginationTerm().ApplyPagination(query); return(query); }
private static string testSorting(string sortInput) { var sifter = new MySifterService(); var context = DataContext.Instance; var model = new SifterModel { Sort = sortInput }; var query = context.SubUsers.Include(x => x.Inner); var sql = sifter.Sift(query, model).ToSql(); //TODO a select() must always be after the sift return(sql); }
private static string testFiltering(string filterInput) { var sifter = new MySifterService(); var context = DataContext.Instance; var model = new SifterModel { Filter = filterInput }; var query = context.SubUsers.Include(x => x.Inner); var sql = sifter.Sift(query, model).ToSql(); return(Regex.Replace(sql, "0+1E0", "")); //Removes all the trailing zeroes for easier testing and legibility }
//There are no tests for invalid pagination requests, because if a request is invalid, it will always use the default pagination options private static string testPagination(string page, string pageSize) { var sifter = new MySifterService(); var context = DataContext.Instance; var model = new SifterModel { Page = page, PageSize = pageSize }; var query = context.SubUsers.Include(x => x.Inner); var sql = sifter.Sift(query, model).ToSql(); return(sql); }