This commit is contained in:
Zeeshaun
2026-03-13 09:11:35 -05:00
parent f004c8205a
commit c2d6bda458
197 changed files with 14970 additions and 0 deletions
@@ -0,0 +1,6 @@
namespace OwnerNumberMigration.ValueParsing;
public class CommaStringArrayStrategy : IValueParsingStrategy<string[]>
{
public string[] Parse(string value) => value.Split(",");
}
@@ -0,0 +1,6 @@
namespace OwnerNumberMigration.ValueParsing;
public interface IParsingStrategyFactory
{
IValueParsingStrategy<T> CreateParsingStrategy<T>(string attribute);
}
@@ -0,0 +1,6 @@
namespace OwnerNumberMigration.ValueParsing;
public interface IValueParsingStrategy<out T>
{
T Parse(string value);
}
@@ -0,0 +1,23 @@
using Microsoft.Extensions.DependencyInjection;
namespace OwnerNumberMigration.ValueParsing;
public class ParsingStrategyFactory : IParsingStrategyFactory
{
private readonly IServiceProvider _services;
public ParsingStrategyFactory(IServiceProvider services)
{
_services = services;
}
public IValueParsingStrategy<T> CreateParsingStrategy<T>(string attribute) => attribute switch
{
"PersonNumber" => (IValueParsingStrategy<T>)_services.GetRequiredService<SingleValueArrayStrategy>(),
"PersonNumbers" => (IValueParsingStrategy<T>)_services.GetRequiredService<CommaStringArrayStrategy>(),
"OrganizationNumber" => (IValueParsingStrategy<T>)_services.GetRequiredService<SingleValueArrayStrategy>(),
"OrganizationNumbers" => (IValueParsingStrategy<T>)_services.GetRequiredService<CommaStringArrayStrategy>(),
"AccountNumber" => (IValueParsingStrategy<T>)_services.GetRequiredService<SingleValueStrategy>(),
_ => throw new NotImplementedException()
};
}
@@ -0,0 +1,6 @@
namespace OwnerNumberMigration.ValueParsing;
public class SingleValueArrayStrategy : IValueParsingStrategy<string[]>
{
public string[] Parse(string value) => new[] { value };
}
@@ -0,0 +1,6 @@
namespace OwnerNumberMigration.ValueParsing;
public class SingleValueStrategy : IValueParsingStrategy<string>
{
public string Parse(string value) => value;
}