예제 #1
0
            // Helpers.

            private async Task <PaginatedList <ContactDto> > ReadFromCache(ContactsQuery query)
            {
                var cache = await _cache.GetAsync <PaginatedList <ContactDto> >();

                cache.Restore(query.PageNumber, query.PageSize);

                return(cache);
            }
예제 #2
0
            private async Task <PaginatedList <ContactDto> > ReadFromDatabase(ContactsQuery query)
            {
                var contacts = await _context.Contacts
                               .Where(e => e.OwnerUserId == query.OwnerUserId)
                               .ProjectTo <ContactDto>(_mapper.ConfigurationProvider)
                               .PaginatedListAsync(query.PageNumber, query.PageSize);

                await _cache.CreateAsync(contacts);

                return(contacts);
            }
예제 #3
0
 public async Task <PaginatedList <ContactDto> > Handle(ContactsQuery request,
                                                        CancellationToken cancellationToken)
 {
     try
     {
         return(await ReadFromCache(request));
     }
     catch (NotFoundException)
     {
         return(await ReadFromDatabase(request));
     }
 }