using System; using System.Threading.Tasks; using ErsatzTV.Core.Domain; using LanguageExt; namespace ErsatzTV.Core.Interfaces.Repositories { public interface IMetadataRepository { Task RemoveGenre(Genre genre); Task RemoveTag(Tag tag); Task RemoveStudio(Studio studio); Task RemoveStyle(Style style); Task RemoveMood(Mood mood); Task RemoveActor(Actor actor); Task Update(Domain.Metadata metadata); Task Add(Domain.Metadata metadata); Task UpdateLocalStatistics(int mediaVersionId, MediaVersion incoming, bool updateVersion = true); Task UpdatePlexStatistics(int mediaVersionId, MediaVersion incoming); Task UpdateArtworkPath(Artwork artwork); Task AddArtwork(Domain.Metadata metadata, Artwork artwork); Task RemoveArtwork(Domain.Metadata metadata, ArtworkKind artworkKind); Task MarkAsUpdated(ShowMetadata metadata, DateTime dateUpdated); Task MarkAsUpdated(SeasonMetadata metadata, DateTime dateUpdated); Task MarkAsUpdated(MovieMetadata metadata, DateTime dateUpdated); Task MarkAsUpdated(EpisodeMetadata metadata, DateTime dateUpdated); Task MarkAsExternal(ShowMetadata metadata); Task SetContentRating(ShowMetadata metadata, string contentRating); Task MarkAsExternal(MovieMetadata metadata); Task SetContentRating(MovieMetadata metadata, string contentRating); Task RemoveGuid(MetadataGuid guid); Task AddGuid(Domain.Metadata metadata, MetadataGuid guid); Task RemoveDirector(Director director); Task RemoveWriter(Writer writer); } }