コード例 #1
0
ファイル: FilterQuery.cs プロジェクト: liannoi/wlodzimierz
            public async Task <PaginatedList <UserDto> > Handle(FilterQuery query, CancellationToken cancellationToken)
            {
                var model = new UserDto
                {
                    UserId    = query.UserId ?? string.Empty,
                    UserName  = query.UserName,
                    Email     = query.Email ?? string.Empty,
                    FirstName = query.FirstName ?? string.Empty,
                    LastName  = query.LastName ?? string.Empty
                };

                var key = query.Identify();

                try
                {
                    _logger.LogInformation("[WLODZIMIERZ.API / Users] Reading from the cache: {Name} {@Query}",
                                           nameof(FilterQuery), query);

                    return(await ReadFromCache(key));
                }
                catch (NotFoundException)
                {
                    _logger.LogWarning("[WLODZIMIERZ.API / Users] No entry found for the passed key in the cache");

                    _logger.LogInformation("[WLODZIMIERZ.API / Users] Reading from the database: {Name} {@Query}",
                                           nameof(FilterQuery), query);

                    return(await ReadFromDatabase(query, model, key));
                }
            }
コード例 #2
0
ファイル: FilterQuery.cs プロジェクト: liannoi/wlodzimierz
            // Helpers.

            private async Task <PaginatedList <UserDto> > ReadFromDatabase(FilterQuery query, UserDto model, object key)
            {
                return(await _identityService.GetAll()
                       .ProjectTo <UserDto>(_mapper.ConfigurationProvider)
                       .Where(await model.FilterAsync())
                       .ProjectToPaginatedListAsync(query.PageNumber, query.PageSize)
                       .Cache(_cache, key));
            }