Esempio n. 1
0
            // Helpers.

            private async Task <PaginatedList <ConversationDto> > ReadFromDatabase(ConversationsQuery query)
            {
                var conversations = await _context.Conversations
                                    .Where(e => e.LeftUserId == query.OwnerUserId || e.RightUserId == query.OwnerUserId)
                                    .OrderBy(x => x.ConversationId)
                                    .ProjectTo <ConversationDto>(_mapper.ConfigurationProvider)
                                    .PaginatedListAsync(query.PageNumber, query.PageSize)
                                    .MapMessageAsync(_context, _mapper);

                await _usersFacade.MapAsync(conversations);

                await _cache.CreateAsync(conversations);

                return(conversations);
            }
Esempio n. 2
0
            public async Task <PaginatedList <ConversationDto> > Handle(ConversationsQuery request,
                                                                        CancellationToken cancellationToken)
            {
                return(await ReadFromDatabase(request));

#if CACHE
                try
                {
                    return(await ReadFromCache());
                }
                catch (NotFoundException)
                {
                    return(await ReadFromDatabase(request));
                }
#endif
            }