using System; using System.Collections.Generic; using System.Threading.Tasks; using JetBrains.Annotations; using Kyoo.Models; namespace Kyoo.Controllers { public interface ILibraryManager : IDisposable, IAsyncDisposable { // Get by slug Task GetLibrary(string slug); Task GetCollection(string slug); Task GetShow(string slug); Task GetSeason(string showSlug, int seasonNumber); Task GetEpisode(string showSlug, int seasonNumber, int episodeNumber); Task GetMovieEpisode(string movieSlug); Task GetTrack(int id); Task GetTrack(int episodeID, string language, bool isForced); Task GetGenre(string slug); Task GetStudio(string slug); Task GetPeople(string slug); // Get by relations Task> GetSeasons(int showID); Task> GetSeasons(string showSlug); Task> GetEpisodes(int showID, int seasonNumber); Task> GetEpisodes(string showSlug, int seasonNumber); Task> GetEpisodes(int seasonID); // Helpers Task GetShowByPath(string path); Task AddShowLink(int showID, int? libraryID, int? collectionID); Task AddShowLink([NotNull] Show show, Library library, Collection collection); // Get all Task> GetLibraries(); Task> GetCollections(); Task> GetShows(); Task> GetSeasons(); Task> GetEpisodes(); Task> GetTracks(); Task> GetStudios(); Task> GetPeoples(); Task> GetGenres(); Task> GetProviders(); // Search Task> SearchLibraries(string searchQuery); Task> SearchCollections(string searchQuery); Task> SearchShows(string searchQuery); Task> SearchSeasons(string searchQuery); Task> SearchEpisodes(string searchQuery); Task> SearchGenres(string searchQuery); Task> SearchStudios(string searchQuery); Task> SearchPeople(string searchQuery); //Register values Task RegisterLibrary(Library library); Task RegisterCollection(Collection collection); Task RegisterShow(Show show); Task RegisterSeason(Season season); Task RegisterEpisode(Episode episode); Task RegisterTrack(Track track); Task RegisterGenre(Genre genre); Task RegisterStudio(Studio studio); Task RegisterPeople(People people); // Edit values Task EditLibrary(Library library, bool resetOld); Task EditCollection(Collection collection, bool resetOld); Task EditShow(Show show, bool resetOld); Task EditSeason(Season season, bool resetOld); Task EditEpisode(Episode episode, bool resetOld); Task EditTrack(Track track, bool resetOld); Task EditGenre(Genre genre, bool resetOld); Task EditStudio(Studio studio, bool resetOld); Task EditPeople(People people, bool resetOld); // Delete values Task DelteLibrary(Library library); Task DeleteCollection(Collection collection); Task DeleteShow(Show show); Task DeleteSeason(Season season); Task DeleteEpisode(Episode episode); Task DeleteTrack(Track track); Task DeleteGenre(Genre genre); Task DeleteStudio(Studio studio); Task DeletePeople(People people); } }