示例#1
0
        public async Task <SearchResult <Album> > SearchAsync(
            SearchAlbumRequest request,
            CancellationToken cancellationToken)
        {
            FilterDefinition <Album> filter = Builders <Album> .Filter.Empty;

            if (!string.IsNullOrWhiteSpace(request.SearchText))
            {
                filter &= Builders <Album> .Filter.Regex(
                    x => x.Title,
                    new BsonRegularExpression($".*{Regex.Escape(request.SearchText)}.*", "i"));
            }

            if (request.Persons is { } persons&& persons.Any())
            {
                FilterDefinition <AlbumPerson> personFilter = Builders <AlbumPerson> .Filter
                                                              .In(x => x.PersonId, persons);

                filter &= Builders <Album> .Filter.ElemMatch(x => x.Persons, personFilter);
            }

            IFindFluent <Album, Album>?cursor = _mediaStoreContext.Albums.Find(filter);
            long totalCount = await cursor.CountDocumentsAsync(cancellationToken);

            List <Album> medias = await cursor
                                  .Skip(request.PageNr *request.PageSize)
                                  .Limit(request.PageSize)
                                  .ToListAsync();

            return(new SearchResult <Album>(medias, (int)totalCount));
        }
示例#2
0
        public List <SongList> SearchAlbum(SearchAlbumRequest request)
        {
            var AlbumName = request.Album;

            if (AlbumName != null)
            {
                var song = _db.SongLists.Where(a => a.Album.Contains(request.Album)).ToList();
                return(song);
            }
            return(null);
        }
示例#3
0
 public async Task <SearchResult <Album> > SearchAlbumsAsync(
     SearchAlbumRequest input,
     CancellationToken cancellationToken)
 {
     return(await _albumService.SearchAsync(input, cancellationToken));
 }
示例#4
0
 public IActionResult SearchAlbum(SearchAlbumRequest data)
 {
     return(Ok(repository.SearchAlbum(data)));
 }