using ErsatzTV.Core.Domain; using ErsatzTV.Core.Metadata; namespace ErsatzTV.Core.Interfaces.Repositories; public interface IMediaServerMusicVideoRepository where TLibrary : Library where TMusicVideo : MusicVideo where TEtag : MediaServerItemEtag { Task> GetExistingMusicVideos(TLibrary library); Task> FlagNormal(TLibrary library, TMusicVideo musicVideo); Task> FlagUnavailable(TLibrary library, TMusicVideo musicVideo); Task> FlagFileNotFound(TLibrary library, List musicVideoItemIds); // Unlike the movie/other-video seams, GetOrAdd takes the resolved Artist and LibraryFolder: a music video is // owned by an Artist (FK, not null) and ersatztv#488 requires the media file to carry its LibraryFolderId. Task>> GetOrAdd( TLibrary library, Artist artist, LibraryFolder libraryFolder, TMusicVideo item, bool deepScan, CancellationToken cancellationToken); Task SetEtag(TMusicVideo musicVideo, string etag); }