using ErsatzTV.Core.Domain; using ErsatzTV.Core.Metadata; namespace ErsatzTV.Core.Interfaces.Repositories; public interface IMediaServerTelevisionRepository where TLibrary : Library where TShow : Show where TSeason : Season where TEpisode : Episode where TEtag : MediaServerItemEtag { Task> GetExistingShows(TLibrary library, CancellationToken cancellationToken); Task> GetExistingSeasons(TLibrary library, TShow show, CancellationToken cancellationToken); Task> GetExistingEpisodes(TLibrary library, TSeason season, CancellationToken cancellationToken); Task>> GetOrAdd( TLibrary library, TShow item, CancellationToken cancellationToken); Task>> GetOrAdd( TLibrary library, TSeason item, CancellationToken cancellationToken); Task>> GetOrAdd( TLibrary library, TEpisode item, bool deepScan, CancellationToken cancellationToken); Task SetEtag(TShow show, string etag, CancellationToken cancellationToken); Task SetEtag(TSeason season, string etag, CancellationToken cancellationToken); Task SetEtag(TEpisode episode, string etag, CancellationToken cancellationToken); Task> FlagNormal(TLibrary library, TEpisode episode, CancellationToken cancellationToken); Task> FlagNormal(TLibrary library, TSeason season, CancellationToken cancellationToken); Task> FlagNormal(TLibrary library, TShow show, CancellationToken cancellationToken); Task> FlagFileNotFoundShows( TLibrary library, List showItemIds, CancellationToken cancellationToken); Task> FlagFileNotFoundSeasons( TLibrary library, List seasonItemIds, CancellationToken cancellationToken); Task> FlagFileNotFoundEpisodes( TLibrary library, List episodeItemIds, CancellationToken cancellationToken); Task> FlagUnavailable(TLibrary library, TEpisode episode, CancellationToken cancellationToken); Task> FlagRemoteOnly(TLibrary library, TEpisode episode, CancellationToken cancellationToken); }