* add music videos library * add music video tables * first pass at music video library scan * support music videos in playouts * display music videos in search results and collections * fix music video thumbnails * remove some obsolete fields
36 lines
1.3 KiB
C#
36 lines
1.3 KiB
C#
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Threading;
|
|
using System.Threading.Tasks;
|
|
using ErsatzTV.Core.Domain;
|
|
using ErsatzTV.Core.Interfaces.Repositories;
|
|
using LanguageExt;
|
|
using MediatR;
|
|
using static ErsatzTV.Application.Libraries.Mapper;
|
|
|
|
namespace ErsatzTV.Application.Libraries.Queries
|
|
{
|
|
public class GetAllLibrariesHandler : IRequestHandler<GetAllLibraries, List<LibraryViewModel>>
|
|
{
|
|
private readonly ILibraryRepository _libraryRepository;
|
|
|
|
public GetAllLibrariesHandler(ILibraryRepository libraryRepository) => _libraryRepository = libraryRepository;
|
|
|
|
public Task<List<LibraryViewModel>> Handle(GetAllLibraries request, CancellationToken cancellationToken) =>
|
|
_libraryRepository.GetAll()
|
|
.Map(
|
|
list => list.Filter(ShouldIncludeLibrary)
|
|
.OrderBy(l => l.MediaSource is LocalMediaSource ? 0 : 1)
|
|
.ThenBy(l => l.MediaKind)
|
|
.Map(ProjectToViewModel).ToList());
|
|
|
|
private static bool ShouldIncludeLibrary(Library library) =>
|
|
library switch
|
|
{
|
|
LocalLibrary => true,
|
|
PlexLibrary plex => plex.ShouldSyncItems,
|
|
_ => false
|
|
};
|
|
}
|
|
}
|