using System.Collections.Generic; using System.Threading.Tasks; using ErsatzTV.Core.Domain; using LanguageExt; namespace ErsatzTV.Core.Interfaces.Repositories { public interface IMediaSourceRepository { Task Add(LocalMediaSource localMediaSource); Task Add(PlexMediaSource plexMediaSource); Task> GetAll(); Task> GetAllPlex(); Task> GetPlexLibraries(int plexMediaSourceId); Task> GetPlexPathReplacements(int plexMediaSourceId); Task> GetPlexLibrary(int plexLibraryId); Task> Get(int id); Task> GetPlex(int id); Task> GetPlexByLibraryId(int plexLibraryId); Task> GetPlexPathReplacementsByLibraryId(int plexLibraryPathId); Task CountMediaItems(int id); Task Update(LocalMediaSource localMediaSource); Task Update(PlexMediaSource plexMediaSource, List toAdd, List toDelete); Task UpdateLibraries( int plexMediaSourceId, List toAdd, List toDelete); Task UpdatePathReplacements( int plexMediaSourceId, List toAdd, List toUpdate, List toDelete); Task Update(PlexLibrary plexMediaSourceLibrary); Task Delete(int mediaSourceId); Task> DeleteAllPlex(); Task> DisablePlexLibrarySync(List libraryIds); Task EnablePlexLibrarySync(IEnumerable libraryIds); } }