From 489f8d92fff09b7ee79db2b9f0f5597213fdfea8 Mon Sep 17 00:00:00 2001 From: Jason Dove Date: Sun, 21 Mar 2021 21:20:31 -0500 Subject: [PATCH] properly store plex timestamps on update (#98) --- .../Repositories/IMetadataRepository.cs | 6 +++++- ErsatzTV.Core/Plex/PlexMovieLibraryScanner.cs | 3 +++ .../Plex/PlexTelevisionLibraryScanner.cs | 4 ++++ .../Data/Repositories/MetadataRepository.cs | 18 +++++++++++++++++- 4 files changed, 29 insertions(+), 2 deletions(-) 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);