Fixed: Properly clean history on Album and Track Delete

This commit is contained in:
Qstick 2020-01-01 13:17:00 -05:00
commit 6060270f14
4 changed files with 46 additions and 1 deletions

View file

@ -18,6 +18,8 @@ namespace NzbDrone.Core.History
List<History> GetByAlbum(int albumId, HistoryEventType? eventType);
List<History> FindDownloadHistory(int idArtistId, QualityModel quality);
void DeleteForArtist(int artistId);
void DeleteForAlbum(int albumId);
void DeleteForTrack(int trackId);
List<History> Since(DateTime date, HistoryEventType? eventType);
}
@ -97,6 +99,16 @@ namespace NzbDrone.Core.History
Delete(c => c.ArtistId == artistId);
}
public void DeleteForAlbum(int albumId)
{
Delete(c => c.AlbumId == albumId);
}
public void DeleteForTrack(int trackId)
{
Delete(c => c.TrackId == trackId);
}
protected override SortBuilder<History> GetPagedQuery(QueryBuilder<History> query, PagingSpec<History> pagingSpec)
{
var baseQuery = query.Join<History, Artist>(JoinType.Inner, h => h.Artist, (h, a) => h.ArtistId == a.Id)

View file

@ -39,7 +39,9 @@ namespace NzbDrone.Core.History
IHandle<TrackFileDeletedEvent>,
IHandle<TrackFileRenamedEvent>,
IHandle<TrackFileRetaggedEvent>,
IHandle<ArtistDeletedEvent>
IHandle<ArtistDeletedEvent>,
IHandle<TrackDeletedEvent>,
IHandle<AlbumDeletedEvent>
{
private readonly IHistoryRepository _historyRepository;
private readonly Logger _logger;
@ -372,6 +374,16 @@ namespace NzbDrone.Core.History
_historyRepository.DeleteForArtist(message.Artist.Id);
}
public void Handle(AlbumDeletedEvent message)
{
_historyRepository.DeleteForAlbum(message.Album.Id);
}
public void Handle(TrackDeletedEvent message)
{
_historyRepository.DeleteForTrack(message.Track.Id);
}
public List<History> Since(DateTime date, HistoryEventType? eventType)
{
return _historyRepository.Since(date, eventType);

View file

@ -0,0 +1,14 @@
using NzbDrone.Common.Messaging;
namespace NzbDrone.Core.Music.Events
{
public class TrackDeletedEvent : IEvent
{
public Track Track { get; private set; }
public TrackDeletedEvent(Track track)
{
Track = track;
}
}
}

View file

@ -32,12 +32,15 @@ namespace NzbDrone.Core.Music
IHandle<TrackFileDeletedEvent>
{
private readonly ITrackRepository _trackRepository;
private readonly IEventAggregator _eventAggregator;
private readonly Logger _logger;
public TrackService(ITrackRepository trackRepository,
IEventAggregator eventAggregator,
Logger logger)
{
_trackRepository = trackRepository;
_eventAggregator = eventAggregator;
_logger = logger;
}
@ -115,6 +118,10 @@ namespace NzbDrone.Core.Music
public void DeleteMany(List<Track> tracks)
{
_trackRepository.DeleteMany(tracks);
foreach (var track in tracks)
{
_eventAggregator.PublishEvent(new TrackDeletedEvent(track));
}
}
public void SetFileIds(List<Track> tracks)