1
0
mirror of https://github.com/Sonarr/Sonarr.git synced 2026-04-20 21:54:58 -04:00

Add reason enum to decision engine rejections

This commit is contained in:
Mark McDowall
2024-11-11 10:03:18 -08:00
parent 160151c6e0
commit 8c67a3bdee
80 changed files with 634 additions and 458 deletions
@@ -8,7 +8,7 @@ using NzbDrone.Core.Qualities;
namespace NzbDrone.Core.DecisionEngine.Specifications.RssSync
{
public class DelaySpecification : IDecisionEngineSpecification
public class DelaySpecification : IDownloadDecisionEngineSpecification
{
private readonly IPendingReleaseService _pendingReleaseService;
private readonly IDelayProfileService _delayProfileService;
@@ -26,12 +26,12 @@ namespace NzbDrone.Core.DecisionEngine.Specifications.RssSync
public SpecificationPriority Priority => SpecificationPriority.Database;
public RejectionType Type => RejectionType.Temporary;
public virtual Decision IsSatisfiedBy(RemoteEpisode subject, SearchCriteriaBase searchCriteria)
public virtual DownloadSpecDecision IsSatisfiedBy(RemoteEpisode subject, SearchCriteriaBase searchCriteria)
{
if (searchCriteria != null && searchCriteria.UserInvokedSearch)
{
_logger.Debug("Ignoring delay for user invoked search");
return Decision.Accept();
return DownloadSpecDecision.Accept();
}
var qualityProfile = subject.Series.QualityProfile.Value;
@@ -42,7 +42,7 @@ namespace NzbDrone.Core.DecisionEngine.Specifications.RssSync
if (delay == 0)
{
_logger.Debug("QualityProfile does not require a waiting period before download for {0}.", subject.Release.DownloadProtocol);
return Decision.Accept();
return DownloadSpecDecision.Accept();
}
var qualityComparer = new QualityModelComparer(qualityProfile);
@@ -58,7 +58,7 @@ namespace NzbDrone.Core.DecisionEngine.Specifications.RssSync
if (qualityCompare == 0 && newQuality?.Revision.CompareTo(currentQuality.Revision) > 0)
{
_logger.Debug("New quality is a better revision for existing quality, skipping delay");
return Decision.Accept();
return DownloadSpecDecision.Accept();
}
}
}
@@ -72,7 +72,7 @@ namespace NzbDrone.Core.DecisionEngine.Specifications.RssSync
if (isBestInProfile && isPreferredProtocol)
{
_logger.Debug("Quality is highest in profile for preferred protocol, will not delay");
return Decision.Accept();
return DownloadSpecDecision.Accept();
}
}
@@ -85,7 +85,7 @@ namespace NzbDrone.Core.DecisionEngine.Specifications.RssSync
if (score >= minimum && isPreferredProtocol)
{
_logger.Debug("Custom format score ({0}) meets minimum ({1}) for preferred protocol, will not delay", score, minimum);
return Decision.Accept();
return DownloadSpecDecision.Accept();
}
}
@@ -95,16 +95,16 @@ namespace NzbDrone.Core.DecisionEngine.Specifications.RssSync
if (oldest != null && oldest.Release.AgeMinutes > delay)
{
return Decision.Accept();
return DownloadSpecDecision.Accept();
}
if (subject.Release.AgeMinutes < delay)
{
_logger.Debug("Waiting for better quality release, There is a {0} minute delay on {1}", delay, subject.Release.DownloadProtocol);
return Decision.Reject("Waiting for better quality release");
return DownloadSpecDecision.Reject(DownloadRejectionReason.MinimumAgeDelay, "Waiting for better quality release");
}
return Decision.Accept();
return DownloadSpecDecision.Accept();
}
}
}