diff --git a/ErsatzTV.Core/Interfaces/Repositories/IMetadataRepository.cs b/ErsatzTV.Core/Interfaces/Repositories/IMetadataRepository.cs index 9186cc220..0710d1474 100644 --- a/ErsatzTV.Core/Interfaces/Repositories/IMetadataRepository.cs +++ b/ErsatzTV.Core/Interfaces/Repositories/IMetadataRepository.cs @@ -1,4 +1,5 @@ -using System.Threading.Tasks; +using System; +using System.Threading.Tasks; using ErsatzTV.Core.Domain; using LanguageExt; @@ -16,5 +17,8 @@ namespace ErsatzTV.Core.Interfaces.Repositories 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); } } diff --git a/ErsatzTV.Core/Plex/PlexMovieLibraryScanner.cs b/ErsatzTV.Core/Plex/PlexMovieLibraryScanner.cs index 3ea194f8d..fd86323f3 100644 --- a/ErsatzTV.Core/Plex/PlexMovieLibraryScanner.cs +++ b/ErsatzTV.Core/Plex/PlexMovieLibraryScanner.cs @@ -189,6 +189,8 @@ namespace ErsatzTV.Core.Plex } } + await _metadataRepository.MarkAsUpdated(existingMetadata, incomingMetadata.DateUpdated); + // TODO: update other metadata? } @@ -207,6 +209,7 @@ namespace ErsatzTV.Core.Plex { await UpdateArtworkIfNeeded(existingMetadata, incomingMetadata, ArtworkKind.Poster); await UpdateArtworkIfNeeded(existingMetadata, incomingMetadata, ArtworkKind.FanArt); + await _metadataRepository.MarkAsUpdated(existingMetadata, incomingMetadata.DateUpdated); } return result; diff --git a/ErsatzTV.Core/Plex/PlexTelevisionLibraryScanner.cs b/ErsatzTV.Core/Plex/PlexTelevisionLibraryScanner.cs index 200e04547..e31819dbb 100644 --- a/ErsatzTV.Core/Plex/PlexTelevisionLibraryScanner.cs +++ b/ErsatzTV.Core/Plex/PlexTelevisionLibraryScanner.cs @@ -153,6 +153,8 @@ namespace ErsatzTV.Core.Plex result.IsUpdated = true; } } + + await _metadataRepository.MarkAsUpdated(existingMetadata, incomingMetadata.DateUpdated); } return result; @@ -170,6 +172,7 @@ namespace ErsatzTV.Core.Plex { await UpdateArtworkIfNeeded(existingMetadata, incomingMetadata, ArtworkKind.Poster); await UpdateArtworkIfNeeded(existingMetadata, incomingMetadata, ArtworkKind.FanArt); + await _metadataRepository.MarkAsUpdated(existingMetadata, incomingMetadata.DateUpdated); } return result; @@ -235,6 +238,7 @@ namespace ErsatzTV.Core.Plex if (incomingMetadata.DateUpdated > existingMetadata.DateUpdated) { await UpdateArtworkIfNeeded(existingMetadata, incomingMetadata, ArtworkKind.Poster); + await _metadataRepository.MarkAsUpdated(existingMetadata, incomingMetadata.DateUpdated); } return existing; diff --git a/ErsatzTV.Infrastructure/Data/Repositories/MetadataRepository.cs b/ErsatzTV.Infrastructure/Data/Repositories/MetadataRepository.cs index 9bfa8a329..433cc213a 100644 --- a/ErsatzTV.Infrastructure/Data/Repositories/MetadataRepository.cs +++ b/ErsatzTV.Infrastructure/Data/Repositories/MetadataRepository.cs @@ -1,4 +1,5 @@ -using System.Data; +using System; +using System.Data; using System.Threading.Tasks; using Dapper; using ErsatzTV.Core.Domain; @@ -109,6 +110,21 @@ namespace ErsatzTV.Infrastructure.Data.Repositories OR ShowMetadataId = @Id OR SeasonMetadataId = @Id OR EpisodeMetadataId = @Id)", new { ArtworkKind = artworkKind, metadata.Id }).ToUnit(); + public Task MarkAsUpdated(ShowMetadata metadata, DateTime dateUpdated) => + _dbConnection.ExecuteAsync( + @"UPDATE ShowMetadata SET DateUpdated = @DateUpdated WHERE Id = @Id", + new { DateUpdated = dateUpdated, metadata.Id }).ToUnit(); + + public Task MarkAsUpdated(SeasonMetadata metadata, DateTime dateUpdated) => + _dbConnection.ExecuteAsync( + @"UPDATE SeasonMetadata SET DateUpdated = @DateUpdated WHERE Id = @Id", + new { DateUpdated = dateUpdated, metadata.Id }).ToUnit(); + + public Task MarkAsUpdated(MovieMetadata metadata, DateTime dateUpdated) => + _dbConnection.ExecuteAsync( + @"UPDATE MovieMetadata SET DateUpdated = @DateUpdated WHERE Id = @Id", + new { DateUpdated = dateUpdated, metadata.Id }).ToUnit(); + public Task RemoveGenre(Genre genre) => _dbConnection.ExecuteAsync("DELETE FROM Genre WHERE Id = @GenreId", new { GenreId = genre.Id }) .Map(result => result > 0);