using System.Collections.Generic; using System.Threading.Tasks; using JetBrains.Annotations; using Kyoo.Models; namespace Kyoo.Controllers { public interface IRepository { Task Get(long 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(T obj); } public interface IShowRepository : IRepository { Task GetByPath(string path); Task AddShowLink(long showID, long? libraryID, long? collectionID); } public interface ISeasonRepository : IRepository { Task Get(string showSlug, long seasonNumber); Task> GetSeasons(long showID); Task> GetSeasons(string showSlug); } public interface IEpisodeRepository : IRepository { Task Get(string showSlug, long seasonNumber, long episodeNumber); Task> GetEpisodes(long showID, long seasonNumber); Task> GetEpisodes(string showSlug, long seasonNumber); Task> GetEpisodes(long seasonID); } public interface ITrackRepository : IRepository { Task Get(long 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 {} }