public async Task <PaginatedList <ConversationMessageDto> > Handle(ConversationMessagesQuery request, CancellationToken cancellationToken) { try { return(await ReadFromCache(request)); } catch (NotFoundException) { return(await ReadFromDatabase(request)); } }
private async Task <PaginatedList <ConversationMessageDto> > ReadFromDatabase(ConversationMessagesQuery query) { var contacts = await _context.ConversationMessages .Where(e => e.OwnerUserId == query.OwnerUserId) .ProjectTo <ConversationMessageDto>(_mapper.ConfigurationProvider) .PaginatedListAsync(query.PageNumber, query.PageSize); await _cache.CreateAsync(contacts); return(contacts); }
private async Task <PaginatedList <ConversationMessageDto> > ReadFromCache(ConversationMessagesQuery query) { var cache = await _cache.GetAsync <PaginatedList <ConversationMessageDto> >(); cache.Restore(query.PageNumber, query.PageSize); return(cache); }