public async Task <IList <BlogPost> > HandleAsync(GetRecentBlogPostsQuery query) { var recentPosts = await _context.BlogPosts .AsNoTracking() .Where(bp => bp.Public == true && bp.PublishOn <= DateTime.Now) .OrderByDescending(bp => bp.ModifiedAt) .ThenByDescending(bp => bp.PublishOn) .Take(query.NumberOfPostsToGet) .ToListAsync(); return(recentPosts); }
public async Task <IActionResult> Index() { GetRecentBlogPostsQuery grbp = new GetRecentBlogPostsQuery() { NumberOfPostsToGet = 7 }; var recentPosts = await _qpa.ProcessAsync(grbp); var vhvm = new HomeViewModel() { RecentPosts = recentPosts }; return(View(vhvm)); }
public async Task <IActionResult> Index() { var grbp = new GetRecentBlogPostsQuery() { NumberOfPostsToGet = 7 }; var recentPosts = await _qpa.ProcessAsync(grbp); var gtphp = new GetTopicPostsForHomePageViewModelQuery(); var topicPostsViewModel = await _qpa.ProcessAsync(gtphp); var vhvm = new HomeViewModel() { RecentPosts = recentPosts, TopicPosts = topicPostsViewModel }; return(View(vhvm)); }
public async void GetRecentBlogPostsTest() { Container container = new Container(); container.Options.DefaultScopedLifestyle = new AsyncScopedLifestyle(); container.Register <BlogDbContext>(() => { return(new BlogDbContext(new DbContextOptionsBuilder <BlogDbContext>().UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString()).Options)); }, Lifestyle.Scoped); container.Register <IQueryHandlerAsync <GetRecentBlogPostsQuery, IList <BlogPost> >, GetRecentBlogPostsEFQH>(); container.Verify(); using (AsyncScopedLifestyle.BeginScope(container)) { var db = container.GetInstance <BlogDbContext>(); SeedBlogDbContext.SeedData(db); QueryProcessorAsync qpa = new QueryProcessorAsync(container); GetRecentBlogPostsQuery grbp = new GetRecentBlogPostsQuery() { NumberOfPostsToGet = 2 }; var x = await qpa.ProcessAsync(grbp); Assert.Equal(2, x.Count); grbp.NumberOfPostsToGet = 3; x = await qpa.ProcessAsync(grbp); Assert.Equal(3, x.Count); } }