Skip to content

Commit

Permalink
small cleanup
Browse files Browse the repository at this point in the history
  • Loading branch information
ErikEJ committed Apr 30, 2024
1 parent c472542 commit e9d1660
Showing 1 changed file with 90 additions and 79 deletions.
169 changes: 90 additions & 79 deletions src/Core/RevEng.Core.60/ServiceProviderBuilder.cs
Original file line number Diff line number Diff line change
Expand Up @@ -31,15 +31,17 @@ public static class ServiceProviderBuilder
public static IServiceCollection AddEfpt(this IServiceCollection serviceCollection, ReverseEngineerCommandOptions options, List<string> errors, List<string> warnings, List<string> info)
{
ArgumentNullException.ThrowIfNull(options);

ArgumentNullException.ThrowIfNull(serviceCollection);
ArgumentNullException.ThrowIfNull(warnings);
ArgumentNullException.ThrowIfNull(errors);
ArgumentNullException.ThrowIfNull(info);

var reporter = new OperationReporter(
new OperationReportHandler(
m => errors.Add(m),
m => warnings.Add(m),
m => info.Add(m),
m => info.Add(m)));
errors.Add,
warnings.Add,
info.Add,
info.Add));

serviceCollection
.AddEntityFrameworkDesignTimeServices()
Expand Down Expand Up @@ -104,82 +106,10 @@ public static IServiceCollection AddEfpt(this IServiceCollection serviceCollecti
{
case DatabaseType.SQLServer:
case DatabaseType.SQLServerDacpac:
var provider = new SqlServerDesignTimeServices();
provider.ConfigureDesignTimeServices(serviceCollection);

if (options.DatabaseType == DatabaseType.SQLServer)
{
#if !CORE80
serviceCollection.AddSingleton<IDatabaseModelFactory, PatchedSqlServerDatabaseModelFactory>();
#endif
serviceCollection.AddSqlServerStoredProcedureDesignTimeServices();
serviceCollection.AddSqlServerFunctionDesignTimeServices();
}

if (options.DatabaseType == DatabaseType.SQLServerDacpac)
{
serviceCollection.AddSingleton<IDatabaseModelFactory, SqlServerDacpacDatabaseModelFactory>(
provider => new SqlServerDacpacDatabaseModelFactory(new SqlServerDacpacDatabaseModelFactoryOptions
{
MergeDacpacs = options.MergeDacpacs,
}));

serviceCollection.AddSqlServerDacpacStoredProcedureDesignTimeServices(new SqlServerDacpacDatabaseModelFactoryOptions
{
MergeDacpacs = options.MergeDacpacs,
});
}

if (options.UseSpatial)
{
var spatial = new SqlServerNetTopologySuiteDesignTimeServices();
spatial.ConfigureDesignTimeServices(serviceCollection);
}

if (options.UseHierarchyId)
{
var hierachyId = new SqlServerHierarchyIdDesignTimeServices();
hierachyId.ConfigureDesignTimeServices(serviceCollection);
}

if (options.UseNodaTime)
{
var nodaTime = new SqlServerNodaTimeDesignTimeServices();
nodaTime.ConfigureDesignTimeServices(serviceCollection);
}
#if CORE80
serviceCollection.AddSingleton<IRelationalTypeMappingSource, SqlServerTypeMappingSource>(
provider => new RevEng.Core.SqlServerTypeMappingSource(
provider.GetService<TypeMappingSourceDependencies>(),
provider.GetService<RelationalTypeMappingSourceDependencies>(),
options.UseDateOnlyTimeOnly));
#endif
#if !CORE80
if (options.UseDateOnlyTimeOnly)
{
var dateOnlyTimeOnly = new SqlServerDateOnlyTimeOnlyDesignTimeServices();
dateOnlyTimeOnly.ConfigureDesignTimeServices(serviceCollection);
}
#endif
break;
AddSqlServerProviderServices(serviceCollection, options); break;

case DatabaseType.Npgsql:
var npgsqlProvider = new NpgsqlDesignTimeServices();
npgsqlProvider.ConfigureDesignTimeServices(serviceCollection);

serviceCollection.AddPostgresStoredProcedureDesignTimeServices();

if (options.UseNodaTime)
{
var nodaTime = new NpgsqlNodaTimeDesignTimeServices();
nodaTime.ConfigureDesignTimeServices(serviceCollection);
}

if (options.UseSpatial)
{
var spatial = new NpgsqlNetTopologySuiteDesignTimeServices();
spatial.ConfigureDesignTimeServices(serviceCollection);
}
AddPostgresProviderServices(serviceCollection, options);

break;

Expand Down Expand Up @@ -225,5 +155,86 @@ public static IServiceCollection AddEfpt(this IServiceCollection serviceCollecti

return serviceCollection;
}

private static void AddPostgresProviderServices(IServiceCollection serviceCollection, ReverseEngineerCommandOptions options)
{
var npgsqlProvider = new NpgsqlDesignTimeServices();
npgsqlProvider.ConfigureDesignTimeServices(serviceCollection);

serviceCollection.AddPostgresStoredProcedureDesignTimeServices();

if (options.UseNodaTime)
{
var nodaTime = new NpgsqlNodaTimeDesignTimeServices();
nodaTime.ConfigureDesignTimeServices(serviceCollection);
}

if (options.UseSpatial)
{
var spatial = new NpgsqlNetTopologySuiteDesignTimeServices();
spatial.ConfigureDesignTimeServices(serviceCollection);
}
}

private static void AddSqlServerProviderServices(IServiceCollection serviceCollection, ReverseEngineerCommandOptions options)
{
var provider = new SqlServerDesignTimeServices();
provider.ConfigureDesignTimeServices(serviceCollection);

if (options.DatabaseType == DatabaseType.SQLServer)
{
#if !CORE80
serviceCollection.AddSingleton<IDatabaseModelFactory, PatchedSqlServerDatabaseModelFactory>();
#endif
serviceCollection.AddSqlServerStoredProcedureDesignTimeServices();
serviceCollection.AddSqlServerFunctionDesignTimeServices();
}

if (options.DatabaseType == DatabaseType.SQLServerDacpac)
{
serviceCollection.AddSingleton<IDatabaseModelFactory, SqlServerDacpacDatabaseModelFactory>(
provider => new SqlServerDacpacDatabaseModelFactory(new SqlServerDacpacDatabaseModelFactoryOptions
{
MergeDacpacs = options.MergeDacpacs,
}));

serviceCollection.AddSqlServerDacpacStoredProcedureDesignTimeServices(new SqlServerDacpacDatabaseModelFactoryOptions
{
MergeDacpacs = options.MergeDacpacs,
});
}

if (options.UseSpatial)
{
var spatial = new SqlServerNetTopologySuiteDesignTimeServices();
spatial.ConfigureDesignTimeServices(serviceCollection);
}

if (options.UseHierarchyId)
{
var hierachyId = new SqlServerHierarchyIdDesignTimeServices();
hierachyId.ConfigureDesignTimeServices(serviceCollection);
}

if (options.UseNodaTime)
{
var nodaTime = new SqlServerNodaTimeDesignTimeServices();
nodaTime.ConfigureDesignTimeServices(serviceCollection);
}
#if CORE80
serviceCollection.AddSingleton<IRelationalTypeMappingSource, SqlServerTypeMappingSource>(
provider => new SqlServerTypeMappingSource(
provider.GetService<TypeMappingSourceDependencies>(),
provider.GetService<RelationalTypeMappingSourceDependencies>(),
options.UseDateOnlyTimeOnly));
#endif
#if !CORE80
if (options.UseDateOnlyTimeOnly)
{
var dateOnlyTimeOnly = new SqlServerDateOnlyTimeOnlyDesignTimeServices();
dateOnlyTimeOnly.ConfigureDesignTimeServices(serviceCollection);
}
#endif
}
}
}

0 comments on commit e9d1660

Please sign in to comment.