using System.Diagnostics.CodeAnalysis; using ErsatzTV.Core.Domain; 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 UpdateStatistics(MediaItem mediaItem, MediaVersion incoming, bool updateVersion = true); Task UpdateArtworkPath(Artwork artwork); Task AddArtwork(Domain.Metadata metadata, Artwork artwork); Task RemoveArtwork(Domain.Metadata metadata, ArtworkKind artworkKind); Task CloneArtwork( Domain.Metadata metadata, Option maybeArtwork, ArtworkKind artworkKind, string sourcePath, DateTime lastWriteTime); 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); [SuppressMessage("Naming", "CA1720:Identifier contains type name")] Task RemoveGuid(MetadataGuid guid); [SuppressMessage("Naming", "CA1720:Identifier contains type name")] Task AddGuid(Domain.Metadata metadata, MetadataGuid guid); Task RemoveDirector(Director director); Task RemoveWriter(Writer writer); Task UpdateSubtitles(Domain.Metadata metadata, List subtitles); }