using System.Collections.Generic; using System.Threading.Tasks; using ErsatzTV.Core.Domain; using ErsatzTV.Core.Emby; using ErsatzTV.Core.Jellyfin; using ErsatzTV.Core.Metadata; using LanguageExt; namespace ErsatzTV.Core.Interfaces.Repositories { public interface IMovieRepository { Task AllMoviesExist(List movieIds); Task> GetMovie(int movieId); Task>> GetOrAdd(LibraryPath libraryPath, string path); Task>> GetOrAdd(PlexLibrary library, PlexMovie item); Task> GetMoviesForCards(List ids); Task> FindMoviePaths(LibraryPath libraryPath); Task> DeleteByPath(LibraryPath libraryPath, string path); Task AddGenre(MovieMetadata metadata, Genre genre); Task AddTag(MovieMetadata metadata, Tag tag); Task AddStudio(MovieMetadata metadata, Studio studio); Task AddActor(MovieMetadata metadata, Actor actor); Task> RemoveMissingPlexMovies(PlexLibrary library, List movieKeys); Task UpdateSortTitle(MovieMetadata movieMetadata); Task> GetExistingJellyfinMovies(JellyfinLibrary library); Task> RemoveMissingJellyfinMovies(JellyfinLibrary library, List movieIds); Task AddJellyfin(JellyfinMovie movie); Task> UpdateJellyfin(JellyfinMovie movie); Task> GetExistingEmbyMovies(EmbyLibrary library); Task> RemoveMissingEmbyMovies(EmbyLibrary library, List movieIds); Task AddEmby(EmbyMovie movie); Task> UpdateEmby(EmbyMovie movie); Task AddDirector(MovieMetadata metadata, Director director); Task AddWriter(MovieMetadata metadata, Writer writer); Task UpdatePath(int mediaFileId, string path); } }