using System.Collections.Generic; using System.Threading.Tasks; using ErsatzTV.Core.Domain; using LanguageExt; namespace ErsatzTV.Core.Interfaces.Repositories { public interface ITelevisionRepository { Task Update(Show show); Task Update(Season season); Task Update(Episode episode); Task> GetAllShows(); Task> GetShow(int showId); Task GetShowCount(); Task> GetPagedShows(int pageNumber, int pageSize); 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> GetEpisode(int episodeId); Task GetEpisodeCount(int seasonId); Task> GetPagedEpisodes(int seasonId, int pageNumber, int pageSize); Task> GetShowByMetadata(int libraryPathId, ShowMetadata metadata); Task> AddShow(int libraryPathId, string showFolder, ShowMetadata metadata); Task> GetOrAddSeason(Show show, int libraryPathId, int seasonNumber); Task> GetOrAddEpisode(Season season, LibraryPath libraryPath, string path); Task DeleteEmptyShows(); } }