parent
7bc3aff1ce
commit
253e3ee89f
@ -0,0 +1,27 @@
|
||||
namespace Recyclarr.Settings.Models;
|
||||
|
||||
[UsedImplicitly(ImplicitUseKindFlags.Assign, ImplicitUseTargetFlags.WithMembers)]
|
||||
public record DataSourceSettings
|
||||
{
|
||||
public IReadOnlyCollection<IUnderlyingDataSource> TrashGuides { get; init; } = [];
|
||||
public IReadOnlyCollection<IUnderlyingDataSource> ConfigTemplates { get; init; } = [];
|
||||
public IReadOnlyCollection<IUnderlyingDataSource> CustomFormats { get; init; } = [];
|
||||
public IReadOnlyCollection<IUnderlyingDataSource> MediaNaming { get; init; } = [];
|
||||
}
|
||||
|
||||
public interface IUnderlyingDataSource;
|
||||
|
||||
[UsedImplicitly(ImplicitUseKindFlags.Assign, ImplicitUseTargetFlags.WithMembers)]
|
||||
public record GitRepositorySource : IUnderlyingDataSource
|
||||
{
|
||||
public string? Name { get; init; }
|
||||
public Uri? CloneUrl { get; init; }
|
||||
public string? Reference { get; init; }
|
||||
}
|
||||
|
||||
[UsedImplicitly(ImplicitUseKindFlags.Assign, ImplicitUseTargetFlags.WithMembers)]
|
||||
public record LocalPathSource : IUnderlyingDataSource
|
||||
{
|
||||
public string Path { get; init; } = "";
|
||||
public string Service { get; init; } = "";
|
||||
}
|
@ -0,0 +1,23 @@
|
||||
using Recyclarr.Common.Extensions;
|
||||
using Recyclarr.Settings.Models;
|
||||
using Recyclarr.Yaml;
|
||||
using YamlDotNet.Serialization;
|
||||
|
||||
namespace Recyclarr.Settings;
|
||||
|
||||
[UsedImplicitly]
|
||||
public class PolymorphicDataSourceYamlBehavior : IYamlBehavior
|
||||
{
|
||||
private static readonly Dictionary<string, Type> Mapping = new()
|
||||
{
|
||||
[nameof(GitRepositorySource.CloneUrl).ToSnakeCase()] = typeof(GitRepositorySource),
|
||||
[nameof(LocalPathSource.Path).ToSnakeCase()] = typeof(LocalPathSource),
|
||||
};
|
||||
|
||||
public void Setup(DeserializerBuilder builder)
|
||||
{
|
||||
builder.WithTypeDiscriminatingNodeDeserializer(o =>
|
||||
o.AddUniqueKeyTypeDiscriminator<IUnderlyingDataSource>(Mapping)
|
||||
);
|
||||
}
|
||||
}
|
Loading…
Reference in new issue