mirror of
https://github.com/lidarr/lidarr.git
synced 2025-08-19 21:13:28 -07:00
Fixed: Properly clean history on Album and Track Delete
This commit is contained in:
parent
f6fd675ad4
commit
6060270f14
4 changed files with 46 additions and 1 deletions
|
@ -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)
|
||||
|
|
|
@ -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);
|
||||
|
|
14
src/NzbDrone.Core/Music/Events/TrackDeletedEvent.cs
Normal file
14
src/NzbDrone.Core/Music/Events/TrackDeletedEvent.cs
Normal 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;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue