mirror of
https://github.com/Radarr/Radarr.git
synced 2026-04-18 21:35:51 -04:00
Fixed: Don't die when adding existing exclusions
This commit is contained in:
@@ -1,4 +1,6 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using Dapper;
|
||||||
using NzbDrone.Core.Datastore;
|
using NzbDrone.Core.Datastore;
|
||||||
using NzbDrone.Core.Messaging.Events;
|
using NzbDrone.Core.Messaging.Events;
|
||||||
|
|
||||||
@@ -8,6 +10,7 @@ namespace NzbDrone.Core.ImportLists.ImportExclusions
|
|||||||
{
|
{
|
||||||
bool IsMovieExcluded(int tmdbid);
|
bool IsMovieExcluded(int tmdbid);
|
||||||
ImportExclusion GetByTmdbid(int tmdbid);
|
ImportExclusion GetByTmdbid(int tmdbid);
|
||||||
|
List<int> AllExcludedTmdbIds();
|
||||||
}
|
}
|
||||||
|
|
||||||
public class ImportExclusionsRepository : BasicRepository<ImportExclusion>, IImportExclusionsRepository
|
public class ImportExclusionsRepository : BasicRepository<ImportExclusion>, IImportExclusionsRepository
|
||||||
@@ -26,5 +29,12 @@ namespace NzbDrone.Core.ImportLists.ImportExclusions
|
|||||||
{
|
{
|
||||||
return Query(x => x.TmdbId == tmdbid).First();
|
return Query(x => x.TmdbId == tmdbid).First();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<int> AllExcludedTmdbIds()
|
||||||
|
{
|
||||||
|
using var conn = _database.OpenConnection();
|
||||||
|
|
||||||
|
return conn.Query<int>("SELECT \"TmdbId\" FROM \"ImportExclusions\"").ToList();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ namespace NzbDrone.Core.ImportLists.ImportExclusions
|
|||||||
|
|
||||||
public List<ImportExclusion> AddExclusions(List<ImportExclusion> exclusions)
|
public List<ImportExclusion> AddExclusions(List<ImportExclusion> exclusions)
|
||||||
{
|
{
|
||||||
_exclusionRepository.InsertMany(exclusions);
|
_exclusionRepository.InsertMany(DeDupeExclusions(exclusions));
|
||||||
|
|
||||||
return exclusions;
|
return exclusions;
|
||||||
}
|
}
|
||||||
@@ -76,8 +76,20 @@ namespace NzbDrone.Core.ImportLists.ImportExclusions
|
|||||||
if (message.AddExclusion)
|
if (message.AddExclusion)
|
||||||
{
|
{
|
||||||
_logger.Debug("Adding {0} Deleted Movies to Import Exclusions", message.Movies.Count);
|
_logger.Debug("Adding {0} Deleted Movies to Import Exclusions", message.Movies.Count);
|
||||||
_exclusionRepository.InsertMany(message.Movies.Select(m => new ImportExclusion { TmdbId = m.TmdbId, MovieTitle = m.Title, MovieYear = m.Year }).ToList());
|
|
||||||
|
var exclusions = message.Movies.Select(m => new ImportExclusion { TmdbId = m.TmdbId, MovieTitle = m.Title, MovieYear = m.Year }).ToList();
|
||||||
|
_exclusionRepository.InsertMany(DeDupeExclusions(exclusions));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private List<ImportExclusion> DeDupeExclusions(List<ImportExclusion> exclusions)
|
||||||
|
{
|
||||||
|
var existingExclusions = _exclusionRepository.AllExcludedTmdbIds();
|
||||||
|
|
||||||
|
return exclusions
|
||||||
|
.DistinctBy(x => x.TmdbId)
|
||||||
|
.Where(x => !existingExclusions.Contains(x.TmdbId))
|
||||||
|
.ToList();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user