using System; using System.Collections.Generic; using System.Threading.Tasks; using JetBrains.Annotations; using Kyoo.Models; namespace Kyoo.Controllers { public interface IRepository : IDisposable, IAsyncDisposable { Task Get(int id); Task Get(string slug); Task> Search(string query); Task> GetAll(); Task Create([NotNull] T obj); Task CreateIfNotExists([NotNull] T obj); Task Edit([NotNull] T edited, bool resetOld); Task Delete(int id); Task Delete(string slug); Task Delete([NotNull] T obj); } public interface IShowRepository : IRepository { Task GetByPath(string path); Task AddShowLink(int showID, int? libraryID, int? collectionID); } public interface ISeasonRepository : IRepository { Task Get(string showSlug, int seasonNumber); Task Delete(string showSlug, int seasonNumber); Task> GetSeasons(int showID); Task> GetSeasons(string showSlug); } public interface IEpisodeRepository : IRepository { Task Get(string showSlug, int seasonNumber, int episodeNumber); Task Delete(string showSlug, int seasonNumber, int episodeNumber); Task> GetEpisodes(int showID, int seasonNumber); Task> GetEpisodes(string showSlug, int seasonNumber); Task> GetEpisodes(int seasonID); } public interface ITrackRepository : IRepository { Task Get(int episodeID, string languageTag, bool isForced); } public interface ILibraryRepository : IRepository {} public interface ICollectionRepository : IRepository {} public interface IGenreRepository : IRepository {} public interface IStudioRepository : IRepository {} public interface IPeopleRepository : IRepository {} public interface IProviderRepository : IRepository {} }