public async Task <TOutput> Find(long id, QueryBag queryBag) { Expression <Func <TEntity, bool> > expression = x => true; expression = expression.And(x => x.Id == id); expression = PreFilter(expression, queryBag); expression = PostFilter(expression, queryBag); var result = await Query().Where(expression).FirstOrDefaultAsync(); return(result != null?Map(result) : default);
public async Task OnExecute() { _commandUtil.PrintTitle("Lista de Usuarios"); var search = _commandUtil.PromptString("Búsqueda (q! para salir): "); while (search != "q!") { var page = _commandUtil.PromptInt("Página", defaultAnswer: 1); var queryString = $"sort=-updatedAt&search=pattern:{search}"; var userData = new UserData(); var request = new PaginationRequest() { Limit = DefaultLimit, Page = page }; var queryBag = QueryBag.Of(queryString, userData); var paginated = await _userQuery.Paginated(request, queryBag); PrintUsersDataTable(paginated); search = _commandUtil.PromptString("Búsqueda (q! para salir): "); } }
protected override Expression <Func <User, bool> > PostFilter(Expression <Func <User, bool> > expression, QueryBag queryBag) { return(expression.And(x => x.DeletedAt == null)); }
protected override Expression <Func <User, bool> > PreFilter(Expression <Func <User, bool> > expression, QueryBag queryBag) { return(expression); }
public async Task <PaginationResponse <TOutput> > Paginated(PaginationRequest request, QueryBag queryBag) { Expression <Func <TEntity, bool> > expression = x => true; expression = PreFilter(expression, queryBag); expression = ApplyFilters(expression, queryBag); expression = PostFilter(expression, queryBag); var query = Query(); var queryCount = Query(); query = query.Where(expression); queryCount = queryCount.Where(expression); if (queryBag.SortBag.Params.Count > 0) { query = ApplySorts(query, queryBag); } return(await PaginationBuilder.Paginate(request, query, queryCount, Map)); }
protected abstract Expression <Func <TEntity, bool> > PostFilter(Expression <Func <TEntity, bool> > expression, QueryBag queryBag);