diff --git a/Directory.Packages.props b/Directory.Packages.props index 0a9a239e..aa64d68a 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -24,7 +24,7 @@ - + diff --git a/src/Recyclarr.Cli/Pipelines/CustomFormat/Cache/CustomFormatCache.cs b/src/Recyclarr.Cli/Pipelines/CustomFormat/Cache/CustomFormatCache.cs index 6be7679c..429fdae3 100644 --- a/src/Recyclarr.Cli/Pipelines/CustomFormat/Cache/CustomFormatCache.cs +++ b/src/Recyclarr.Cli/Pipelines/CustomFormat/Cache/CustomFormatCache.cs @@ -21,7 +21,7 @@ public class CustomFormatCache(IEnumerable mappings) _mappings = _mappings .DistinctBy(x => x.CustomFormatId) .Where(x => transactions.DeletedCustomFormats.All(y => y.CustomFormatId != x.CustomFormatId)) - .FullOuterJoin(existingCfs, JoinType.Hash, + .FullOuterHashJoin(existingCfs, l => l.CustomFormatId, r => r.Id, // Keep existing service CFs, even if they aren't in user config diff --git a/src/Recyclarr.Cli/Pipelines/QualityProfile/PipelinePhases/QualityProfileTransactionPhase.cs b/src/Recyclarr.Cli/Pipelines/QualityProfile/PipelinePhases/QualityProfileTransactionPhase.cs index 09be4781..d54c2670 100644 --- a/src/Recyclarr.Cli/Pipelines/QualityProfile/PipelinePhases/QualityProfileTransactionPhase.cs +++ b/src/Recyclarr.Cli/Pipelines/QualityProfile/PipelinePhases/QualityProfileTransactionPhase.cs @@ -121,7 +121,7 @@ public class QualityProfileTransactionPhase(QualityProfileStatCalculator statCal QualityProfileDto profileDto) { var scoreMap = profileData.CfScores - .FullOuterJoin(profileDto.FormatItems, JoinType.Hash, + .FullOuterHashJoin(profileDto.FormatItems, x => x.FormatId, x => x.Format, // Exists in config, but not in service (these are unusual and should be errors) diff --git a/src/Recyclarr.Cli/Recyclarr.Cli.csproj b/src/Recyclarr.Cli/Recyclarr.Cli.csproj index 5db8a5ca..5b875b68 100644 --- a/src/Recyclarr.Cli/Recyclarr.Cli.csproj +++ b/src/Recyclarr.Cli/Recyclarr.Cli.csproj @@ -15,6 +15,7 @@ + diff --git a/src/Recyclarr.Config/Parsing/PostProcessing/ConfigMerging/ServiceConfigMerger.cs b/src/Recyclarr.Config/Parsing/PostProcessing/ConfigMerging/ServiceConfigMerger.cs index 9dd40f0d..cd72ffde 100644 --- a/src/Recyclarr.Config/Parsing/PostProcessing/ConfigMerging/ServiceConfigMerger.cs +++ b/src/Recyclarr.Config/Parsing/PostProcessing/ConfigMerging/ServiceConfigMerger.cs @@ -91,7 +91,7 @@ public abstract class ServiceConfigMerger where T : ServiceConfigYaml return Combine(a, b, (a1, b1) => { return a1 - .FullOuterJoin(b1, JoinType.Hash, + .FullOuterHashJoin(b1, x => x.Name, x => x.Name, l => l, diff --git a/src/Recyclarr.TrashGuide/CustomFormat/CustomFormatDataComparer.cs b/src/Recyclarr.TrashGuide/CustomFormat/CustomFormatDataComparer.cs index 990715fd..89cf2065 100644 --- a/src/Recyclarr.TrashGuide/CustomFormat/CustomFormatDataComparer.cs +++ b/src/Recyclarr.TrashGuide/CustomFormat/CustomFormatDataComparer.cs @@ -30,7 +30,7 @@ public sealed class CustomFormatDataEqualityComparer : IEqualityComparer x.Name, x => x.Name, _ => false, _ => false, SpecificationEqual) + .FullOuterHashJoin(second, x => x.Name, x => x.Name, _ => false, _ => false, SpecificationEqual) .All(x => x); } @@ -53,7 +53,7 @@ public sealed class CustomFormatDataEqualityComparer : IEqualityComparer x.Name, x => x.Name, _ => false, _ => false, FieldEqual) + .FullOuterHashJoin(second, x => x.Name, x => x.Name, _ => false, _ => false, FieldEqual) .All(x => x); }