mirror of
https://github.com/lidarr/lidarr.git
synced 2025-08-19 13:10:13 -07:00
Fixed: Correctly delete trackfiles on AlbumDeletedEvent
GetFilesByAlbum performs a join on the album releases under the hood, which won't be populated once the album is deleted. Fix by providing a special delete method which omits the join and just looks at albumId.
This commit is contained in:
parent
3ebbf6ff83
commit
447bf63a4d
3 changed files with 18 additions and 2 deletions
|
@ -6,6 +6,7 @@ using NzbDrone.Core.Qualities;
|
||||||
using NzbDrone.Core.Music;
|
using NzbDrone.Core.Music;
|
||||||
using NzbDrone.Core.Test.Framework;
|
using NzbDrone.Core.Test.Framework;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
namespace NzbDrone.Core.Test.MediaFiles
|
namespace NzbDrone.Core.Test.MediaFiles
|
||||||
{
|
{
|
||||||
|
@ -140,5 +141,14 @@ namespace NzbDrone.Core.Test.MediaFiles
|
||||||
file.Artist.Value.Metadata.Value.Should().NotBeNull();
|
file.Artist.Value.Metadata.Value.Should().NotBeNull();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void delete_files_by_album_should_work_if_join_fails()
|
||||||
|
{
|
||||||
|
Db.Delete(album);
|
||||||
|
Subject.DeleteFilesByAlbum(album.Id);
|
||||||
|
|
||||||
|
Db.All<TrackFile>().Where(x => x.AlbumId == album.Id).Should().HaveCount(0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,6 +14,7 @@ namespace NzbDrone.Core.MediaFiles
|
||||||
List<TrackFile> GetFilesByRelease(int releaseId);
|
List<TrackFile> GetFilesByRelease(int releaseId);
|
||||||
List<TrackFile> GetFilesWithBasePath(string path);
|
List<TrackFile> GetFilesWithBasePath(string path);
|
||||||
TrackFile GetFileWithPath(string path);
|
TrackFile GetFileWithPath(string path);
|
||||||
|
void DeleteFilesByAlbum(int albumId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -51,6 +52,12 @@ namespace NzbDrone.Core.MediaFiles
|
||||||
.ToList();
|
.ToList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void DeleteFilesByAlbum(int albumId)
|
||||||
|
{
|
||||||
|
var ids = DataMapper.Query<TrackFile>().Where(x => x.AlbumId == albumId);
|
||||||
|
DeleteMany(ids);
|
||||||
|
}
|
||||||
|
|
||||||
public List<TrackFile> GetFilesByRelease(int releaseId)
|
public List<TrackFile> GetFilesByRelease(int releaseId)
|
||||||
{
|
{
|
||||||
return Query
|
return Query
|
||||||
|
|
|
@ -148,8 +148,7 @@ namespace NzbDrone.Core.MediaFiles
|
||||||
|
|
||||||
public void HandleAsync(AlbumDeletedEvent message)
|
public void HandleAsync(AlbumDeletedEvent message)
|
||||||
{
|
{
|
||||||
var files = GetFilesByAlbum(message.Album.Id);
|
_mediaFileRepository.DeleteFilesByAlbum(message.Album.Id);
|
||||||
_mediaFileRepository.DeleteMany(files);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<TrackFile> GetFilesByArtist(int artistId)
|
public List<TrackFile> GetFilesByArtist(int artistId)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue