You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
recyclarr/src/Recyclarr.Cli/Pipelines/QualityProfile/UpdatedQualityProfile.cs

50 lines
1.6 KiB

using Recyclarr.Cli.Pipelines.QualityProfile.Api;
using Recyclarr.Cli.Pipelines.QualityProfile.PipelinePhases;
namespace Recyclarr.Cli.Pipelines.QualityProfile;
public record UpdatedQualities
{
public ICollection<string> InvalidQualityNames { get; init; } = new List<string>();
public IReadOnlyCollection<ProfileItemDto> Items { get; init; } = new List<ProfileItemDto>();
}
public record UpdatedQualityProfile
{
public required QualityProfileDto ProfileDto { get; init; }
public required ProcessedQualityProfileData ProfileConfig { get; init; }
public required QualityProfileUpdateReason UpdateReason { get; set; }
public IReadOnlyCollection<UpdatedFormatScore> UpdatedScores { get; set; } = Array.Empty<UpdatedFormatScore>();
public UpdatedQualities UpdatedQualities { get; init; } = new();
public string ProfileName
{
get
{
var name = ProfileDto.Name;
if (string.IsNullOrEmpty(name))
{
name = ProfileConfig.Profile.Name;
}
return name;
}
}
public QualityProfileDto BuildUpdatedDto()
{
var config = ProfileConfig.Profile;
return ProfileDto with
{
Name = config.Name,
UpgradeAllowed = config.UpgradeAllowed,
MinFormatScore = config.MinFormatScore,
Cutoff = ProfileDto.Items.FindCutoff(config.UpgradeUntilQuality),
CutoffFormatScore = config.UpgradeUntilScore,
FormatItems = UpdatedScores.Select(x => x.Dto with {Score = x.NewScore}).ToList(),
Items = UpdatedQualities.Items
};
}
}