using ErsatzTV.Core.Domain; using ErsatzTV.Core.Metadata; namespace ErsatzTV.Core.Interfaces.Repositories; public interface ITelevisionRepository { Task AllShowsExist(List showIds); Task AllSeasonsExist(List seasonIds); Task AllEpisodesExist(List episodeIds); Task> GetAllShows(); Task> GetShow(int showId); Task> GetShowsForCards(List ids); Task> GetSeasonsForCards(List ids); Task> GetEpisodesForCards(List ids); Task> GetShowItems(int showId); Task> GetAllSeasons(); Task> GetSeason(int seasonId); Task GetSeasonCount(int showId); Task> GetPagedSeasons(int televisionShowId, int pageNumber, int pageSize); Task> GetSeasonItems(int seasonId); Task GetEpisodeCount(int seasonId); Task> GetPagedEpisodes(int seasonId, int pageNumber, int pageSize); Task> GetShowByMetadata(int libraryPathId, ShowMetadata metadata, string showFolder); Task>> AddShow(int libraryPathId, ShowMetadata metadata); Task> GetOrAddSeason(Show show, int libraryPathId, int seasonNumber); Task> GetOrAddEpisode(Season season, LibraryPath libraryPath, string path); Task> FindEpisodePaths(LibraryPath libraryPath); Task DeleteByPath(LibraryPath libraryPath, string path); Task DeleteEmptySeasons(LibraryPath libraryPath); Task> DeleteEmptyShows(LibraryPath libraryPath); Task AddGenre(ShowMetadata metadata, Genre genre); Task AddGenre(EpisodeMetadata metadata, Genre genre); Task AddTag(Domain.Metadata metadata, Tag tag); Task AddStudio(ShowMetadata metadata, Studio studio); Task AddActor(ShowMetadata metadata, Actor actor); Task AddActor(EpisodeMetadata metadata, Actor actor); Task RemoveMetadata(Episode episode, EpisodeMetadata metadata); Task AddDirector(EpisodeMetadata metadata, Director director); Task AddWriter(EpisodeMetadata metadata, Writer writer); Task UpdateTitles(EpisodeMetadata metadata, string title, string sortTitle); Task UpdateOutline(EpisodeMetadata metadata, string outline); Task UpdatePlot(EpisodeMetadata metadata, string plot); Task UpdateYear(ShowMetadata metadata, int? year); }