コード例 #1
0
ファイル: HostController.cs プロジェクト: Fazzani/Synker2
        public IActionResult List([FromBody] QueryListBaseModel query)
        {
            var response = _dbContext.Hosts
                           .OrderByDescending(x => x.Id)
                           .GetPaged(query.PageNumber, query.PageSize, query.GetAll);

            return(Ok(response));
        }
コード例 #2
0
ファイル: TvgMediaController.cs プロジェクト: Fazzani/Synker2
        public async Task <IActionResult> SearchAsync([FromBody] QueryListBaseModel query, CancellationToken cancellationToken = default)
        {
            var response = await _elasticConnectionClient.Client.Value.SearchAsync <TvgMedia>(rq => rq
                                                                                              .Size(query.PageSize)
                                                                                              .From(query.Skip)
                                                                                              .Sort(x => GetSortDescriptor(x, query.SortDict))
                                                                                              .Query(q => q.Match(m => m.Field(ff => ff.Name)
                                                                                                                  .Query(query.SearchDict.LastOrDefault().Value)))

                                                                                              , cancellationToken);

            if (!response.IsValid)
            {
                return(BadRequest(response.DebugInformation));
            }
            //response.AssertElasticResponse();
            return(new OkObjectResult(response.GetResultListModel <TvgMedia, TvgMediaModel>()));
        }
コード例 #3
0
        public async Task <IActionResult> ListAsync([FromBody] QueryListBaseModel query, [FromQuery] bool light = true,
                                                    CancellationToken cancellationToken = default)
        {
            var user = await _dbContext.Users.FindAsync(new object[] { UserId }, cancellationToken);

            if (user == null)
            {
                _logger.LogError($"User {this.UserEmail} not founded");
                return(BadRequest($"User {this.UserEmail} not found"));
            }
            var plCacheKey = $"{UserCachePlaylistKey}_{query.GetHashCode()}_{light}";
            var playlists  = await _memoryCache.GetOrCreateAsync(plCacheKey, async entry =>
            {
                if (_memoryCache.TryGetValue(UserCachePlaylistKey, out List <string> list))
                {
                    list.Add(UserCachePlaylistKey);
                }
                else
                {
                    list = new List <string> {
                        plCacheKey
                    };
                }

                _memoryCache.Set(UserCachePlaylistKey, list);
                entry.SlidingExpiration = TimeSpan.FromHours(2);

                return(await Task.Run(() =>
                {
                    var response = _dbContext.Playlist
                                   .Where(x => x.UserId == user.Id)
                                   .OrderByDescending(x => x.Id)
                                   .Select(pl => light ? PlaylistModel.ToLightModel(pl, Url) : PlaylistModel.ToModel(pl, Url))
                                   .GetPaged(query.PageNumber, query.PageSize);
                    return response;
                }));
            });

            return(new OkObjectResult(playlists));
        }