Fixed: Loading queue with pending releases for deleted series

pull/7359/head
Bogdan 4 months ago committed by Mark McDowall
parent 22005dc8c5
commit 38c0135d7c

@ -64,19 +64,25 @@ namespace NzbDrone.Core.Datastore
public static SqlBuilder Join<TLeft, TRight>(this SqlBuilder builder, Expression<Func<TLeft, TRight, bool>> filter) public static SqlBuilder Join<TLeft, TRight>(this SqlBuilder builder, Expression<Func<TLeft, TRight, bool>> filter)
{ {
var wb = GetWhereBuilder(builder.DatabaseType, filter, false, builder.Sequence); var wb = GetWhereBuilder(builder.DatabaseType, filter, false, builder.Sequence);
var rightTable = TableMapping.Mapper.TableNameMapping(typeof(TRight)); var rightTable = TableMapping.Mapper.TableNameMapping(typeof(TRight));
return builder.Join($"\"{rightTable}\" ON {wb.ToString()}"); return builder.Join($"\"{rightTable}\" ON {wb}");
} }
public static SqlBuilder LeftJoin<TLeft, TRight>(this SqlBuilder builder, Expression<Func<TLeft, TRight, bool>> filter) public static SqlBuilder LeftJoin<TLeft, TRight>(this SqlBuilder builder, Expression<Func<TLeft, TRight, bool>> filter)
{ {
var wb = GetWhereBuilder(builder.DatabaseType, filter, false, builder.Sequence); var wb = GetWhereBuilder(builder.DatabaseType, filter, false, builder.Sequence);
var rightTable = TableMapping.Mapper.TableNameMapping(typeof(TRight));
return builder.LeftJoin($"\"{rightTable}\" ON {wb}");
}
public static SqlBuilder InnerJoin<TLeft, TRight>(this SqlBuilder builder, Expression<Func<TLeft, TRight, bool>> filter)
{
var wb = GetWhereBuilder(builder.DatabaseType, filter, false, builder.Sequence);
var rightTable = TableMapping.Mapper.TableNameMapping(typeof(TRight)); var rightTable = TableMapping.Mapper.TableNameMapping(typeof(TRight));
return builder.LeftJoin($"\"{rightTable}\" ON {wb.ToString()}"); return builder.InnerJoin($"\"{rightTable}\" ON {wb}");
} }
public static SqlBuilder GroupBy<TModel>(this SqlBuilder builder, Expression<Func<TModel, object>> property) public static SqlBuilder GroupBy<TModel>(this SqlBuilder builder, Expression<Func<TModel, object>> property)

@ -1,6 +1,7 @@
using System.Collections.Generic; using System.Collections.Generic;
using NzbDrone.Core.Datastore; using NzbDrone.Core.Datastore;
using NzbDrone.Core.Messaging.Events; using NzbDrone.Core.Messaging.Events;
using NzbDrone.Core.Tv;
namespace NzbDrone.Core.Download.Pending namespace NzbDrone.Core.Download.Pending
{ {
@ -30,7 +31,11 @@ namespace NzbDrone.Core.Download.Pending
public List<PendingRelease> WithoutFallback() public List<PendingRelease> WithoutFallback()
{ {
return Query(p => p.Reason != PendingReleaseReason.Fallback); var builder = new SqlBuilder(_database.DatabaseType)
.InnerJoin<PendingRelease, Series>((p, s) => p.SeriesId == s.Id)
.Where<PendingRelease>(p => p.Reason != PendingReleaseReason.Fallback);
return Query(builder);
} }
} }
} }

@ -274,10 +274,7 @@ namespace NzbDrone.Core.Download.Pending
{ {
foreach (var series in knownRemoteEpisodes.Values.Select(v => v.Series)) foreach (var series in knownRemoteEpisodes.Values.Select(v => v.Series))
{ {
if (!seriesMap.ContainsKey(series.Id)) seriesMap.TryAdd(series.Id, series);
{
seriesMap[series.Id] = series;
}
} }
} }
@ -293,7 +290,7 @@ namespace NzbDrone.Core.Download.Pending
// Just in case the series was removed, but wasn't cleaned up yet (housekeeper will clean it up) // Just in case the series was removed, but wasn't cleaned up yet (housekeeper will clean it up)
if (series == null) if (series == null)
{ {
return null; continue;
} }
// Languages will be empty if added before upgrading to v4, reparsing the languages if they're empty will set it to Unknown or better. // Languages will be empty if added before upgrading to v4, reparsing the languages if they're empty will set it to Unknown or better.

Loading…
Cancel
Save