WIP
This commit is contained in:
parent
54b057886c
commit
7fc1ae0650
204 changed files with 4345 additions and 134 deletions
40
PlanTempus.Database/ModuleRegistry/DbPostgreSqlModule.cs
Normal file
40
PlanTempus.Database/ModuleRegistry/DbPostgreSqlModule.cs
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
using Autofac;
|
||||
using PlanTempus.Core.Database;
|
||||
using PlanTempus.Core.Database.ConnectionFactory;
|
||||
|
||||
namespace PlanTempus.Database.ModuleRegistry
|
||||
{
|
||||
|
||||
public class DbPostgreSqlModule : Module
|
||||
{
|
||||
public required string ConnectionString { get; set; }
|
||||
|
||||
protected override void Load(ContainerBuilder builder)
|
||||
{
|
||||
Insight.Database.Providers.PostgreSQL.PostgreSQLInsightDbProvider.RegisterProvider();
|
||||
Insight.Database.ColumnMapping.Tables.AddMapper(new SnakeCaseToPascalCaseMapper());
|
||||
builder.RegisterType<PostgresConnectionFactory>()
|
||||
.As<IDbConnectionFactory>()
|
||||
.WithParameter(new TypedParameter(typeof(string), ConnectionString))
|
||||
.SingleInstance();
|
||||
|
||||
builder.RegisterType<SqlOperations>()
|
||||
.As<IDatabaseOperations>();
|
||||
}
|
||||
}
|
||||
|
||||
public class SnakeCaseToPascalCaseMapper : Insight.Database.Mapping.IColumnMapper
|
||||
{
|
||||
public string MapColumn(Type type, System.Data.IDataReader reader, int column)
|
||||
{
|
||||
string databaseName = reader.GetName(column);
|
||||
|
||||
var parts = databaseName.Split(['_'], StringSplitOptions.RemoveEmptyEntries);
|
||||
var pascalName = string.Concat(parts.Select(p =>
|
||||
p.Substring(0, 1).ToUpper() + p.Substring(1).ToLower()
|
||||
));
|
||||
|
||||
return pascalName;
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue