diff --git a/ErsatzTV.Infrastructure/Data/Repositories/EmbyMovieRepository.cs b/ErsatzTV.Infrastructure/Data/Repositories/EmbyMovieRepository.cs index 8cef5d7af..7195fe4ad 100644 --- a/ErsatzTV.Infrastructure/Data/Repositories/EmbyMovieRepository.cs +++ b/ErsatzTV.Infrastructure/Data/Repositories/EmbyMovieRepository.cs @@ -417,6 +417,7 @@ public class EmbyMovieRepository : IEmbyMovieRepository MediaFile file = version.MediaFiles.Head(); MediaFile incomingFile = incomingVersion.MediaFiles.Head(); file.Path = incomingFile.Path; + file.PathHash = PathUtils.GetPathHash(incomingFile.Path); await dbContext.SaveChangesAsync(); } diff --git a/ErsatzTV.Infrastructure/Data/Repositories/EmbyTelevisionRepository.cs b/ErsatzTV.Infrastructure/Data/Repositories/EmbyTelevisionRepository.cs index 60fd4b317..ac8408a06 100644 --- a/ErsatzTV.Infrastructure/Data/Repositories/EmbyTelevisionRepository.cs +++ b/ErsatzTV.Infrastructure/Data/Repositories/EmbyTelevisionRepository.cs @@ -895,6 +895,7 @@ public class EmbyTelevisionRepository( MediaFile file = version.MediaFiles.Head(); MediaFile incomingFile = incomingVersion.MediaFiles.Head(); file.Path = incomingFile.Path; + file.PathHash = PathUtils.GetPathHash(incomingFile.Path); await dbContext.SaveChangesAsync(cancellationToken); } diff --git a/ErsatzTV.Infrastructure/Data/Repositories/JellyfinMovieRepository.cs b/ErsatzTV.Infrastructure/Data/Repositories/JellyfinMovieRepository.cs index b85464990..6150b048e 100644 --- a/ErsatzTV.Infrastructure/Data/Repositories/JellyfinMovieRepository.cs +++ b/ErsatzTV.Infrastructure/Data/Repositories/JellyfinMovieRepository.cs @@ -379,6 +379,7 @@ public class JellyfinMovieRepository : IJellyfinMovieRepository MediaFile file = version.MediaFiles.Head(); MediaFile incomingFile = incomingVersion.MediaFiles.Head(); file.Path = incomingFile.Path; + file.PathHash = PathUtils.GetPathHash(incomingFile.Path); await dbContext.SaveChangesAsync(); } diff --git a/ErsatzTV.Infrastructure/Data/Repositories/JellyfinTelevisionRepository.cs b/ErsatzTV.Infrastructure/Data/Repositories/JellyfinTelevisionRepository.cs index 0b18a464f..52d415689 100644 --- a/ErsatzTV.Infrastructure/Data/Repositories/JellyfinTelevisionRepository.cs +++ b/ErsatzTV.Infrastructure/Data/Repositories/JellyfinTelevisionRepository.cs @@ -932,6 +932,7 @@ public class JellyfinTelevisionRepository : IJellyfinTelevisionRepository // delete old chapters await dbContext.MediaChapters + .TagWithCallSite() .Where(c => c.MediaVersionId == version.Id) .ExecuteDeleteAsync(cancellationToken); @@ -942,11 +943,15 @@ public class JellyfinTelevisionRepository : IJellyfinTelevisionRepository ch.MediaVersionId = version.Id; } - // always update media file path + // always update media file path (and hash) MediaFile incomingFile = incomingVersion.MediaFiles.Head(); await dbContext.MediaFiles + .TagWithCallSite() .Where(mf => mf.MediaVersionId == version.Id) - .ExecuteUpdateAsync(mf => mf.SetProperty(f => f.Path, incomingFile.Path), cancellationToken); + .ExecuteUpdateAsync( + mf => mf.SetProperty(f => f.Path, incomingFile.Path) + .SetProperty(f => f.PathHash, PathUtils.GetPathHash(incomingFile.Path)), + cancellationToken); await dbContext.SaveChangesAsync(cancellationToken); diff --git a/ErsatzTV.Infrastructure/Data/Repositories/MediaItemRepository.cs b/ErsatzTV.Infrastructure/Data/Repositories/MediaItemRepository.cs index 0af10784c..b09f28af8 100644 --- a/ErsatzTV.Infrastructure/Data/Repositories/MediaItemRepository.cs +++ b/ErsatzTV.Infrastructure/Data/Repositories/MediaItemRepository.cs @@ -171,8 +171,8 @@ public class MediaItemRepository( @"select coalesce(EpisodeId, MovieId, MusicVideoId, OtherVideoId, SongId, ImageId, RemoteStreamId) as MediaItemId from MediaVersion MV inner join MediaFile MF on MV.Id = MF.MediaVersionId - where MF.Path = @Path", - new { Path = path }) + where MF.PathHash = @PathHash", + new { PathHash = PathUtils.GetPathHash(path) }) .Map(Optional); foreach (int mediaItemId in maybeMediaItemId) diff --git a/ErsatzTV.Infrastructure/Data/Repositories/MetadataRepository.cs b/ErsatzTV.Infrastructure/Data/Repositories/MetadataRepository.cs index acb4d49ac..5147a4cb0 100644 --- a/ErsatzTV.Infrastructure/Data/Repositories/MetadataRepository.cs +++ b/ErsatzTV.Infrastructure/Data/Repositories/MetadataRepository.cs @@ -118,12 +118,11 @@ public class MetadataRepository(IDbContextFactory dbContextFactory) : await using TvContext dbContext = await dbContextFactory.CreateDbContextAsync(); Option maybeVersion = await dbContext.MediaVersions + .TagWithCallSite() .Include(v => v.Streams) .Include(v => v.Chapters) - .Include(v => v.MediaFiles) .OrderBy(v => v.Id) - .SingleOrDefaultAsync(v => v.Id == mediaVersionId) - .Map(Optional); + .SingleOrDefaultAsync(v => v.Id == mediaVersionId); return await maybeVersion.Match( async existing =>