public async Task <ArticleModel[]> GetAsync(Option <string> viewingUserId, GetArticlesModel request) { var articlesQueryable = AllArticlesQueryable; request.Tag.MatchSome(tagFilter => articlesQueryable = articlesQueryable.Where(a => a.TagList.Any(at => at.Tag.Name == tagFilter))); request.Author.MatchSome(authorFilter => articlesQueryable = articlesQueryable.Where(a => a.Author.UserName == authorFilter)); request.Favorited.MatchSome(favoritedFilter => articlesQueryable = articlesQueryable.Where(a => a.Favorites.Any(af => af.User.UserName == favoritedFilter))); articlesQueryable = articlesQueryable .Skip(request.Offset) .Take(request.Limit); var articles = await articlesQueryable.ToArrayAsync(); return(await ToArticleModelsAsync(viewingUserId, articles)); }
public async Task <IActionResult> Get(GetArticlesModel request) { var articles = await _articlesService.GetAsync(CurrentUserId.SomeNotNull(), request); return(Ok(new { articles, articlesCount = articles.Length })); }