diff --git a/src/BirdsiteLive.Common/Settings/DbSettings.cs b/src/BirdsiteLive.Common/Settings/DbSettings.cs new file mode 100644 index 0000000..b70fba1 --- /dev/null +++ b/src/BirdsiteLive.Common/Settings/DbSettings.cs @@ -0,0 +1,11 @@ +namespace BirdsiteLive.Common.Settings +{ + public class DbSettings + { + public string Type { get; set; } + public string Host { get; set; } + public string Name { get; set; } + public string User { get; set; } + public string Password { get; set; } + } +} \ No newline at end of file diff --git a/src/BirdsiteLive.Common/Settings/InstanceSettings.cs b/src/BirdsiteLive.Common/Settings/InstanceSettings.cs index ce200d9..ba2a517 100644 --- a/src/BirdsiteLive.Common/Settings/InstanceSettings.cs +++ b/src/BirdsiteLive.Common/Settings/InstanceSettings.cs @@ -4,6 +4,5 @@ { public string Domain { get; set; } public string AdminEmail { get; set; } - public string PostgresConnString { get; set; } } } \ No newline at end of file diff --git a/src/BirdsiteLive.Common/Structs/DbTypes.cs b/src/BirdsiteLive.Common/Structs/DbTypes.cs new file mode 100644 index 0000000..767f0f3 --- /dev/null +++ b/src/BirdsiteLive.Common/Structs/DbTypes.cs @@ -0,0 +1,7 @@ +namespace BirdsiteLive.Common.Structs +{ + public struct DbTypes + { + public static string Postgres = "postgres"; + } +} \ No newline at end of file diff --git a/src/BirdsiteLive/Startup.cs b/src/BirdsiteLive/Startup.cs index e31945f..c2d7cb0 100644 --- a/src/BirdsiteLive/Startup.cs +++ b/src/BirdsiteLive/Startup.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using BirdsiteLive.Common.Settings; +using BirdsiteLive.Common.Structs; using BirdsiteLive.DAL.Contracts; using BirdsiteLive.DAL.Postgres.DataAccessLayers; using BirdsiteLive.DAL.Postgres.Settings; @@ -51,15 +52,26 @@ namespace BirdsiteLive var instanceSettings = Configuration.GetSection("Instance").Get(); services.For().Use(x => instanceSettings); - var postgresSettings = new PostgresSettings - { - ConnString = instanceSettings.PostgresConnString - }; - services.For().Use(x => postgresSettings); + var dbSettings = Configuration.GetSection("Db").Get(); + services.For().Use(x => dbSettings); - services.For().Use().Singleton(); - services.For().Use().Singleton(); - services.For().Use().Singleton(); + if (string.Equals(dbSettings.Type, DbTypes.Postgres, StringComparison.OrdinalIgnoreCase)) + { + var connString = $"Host={dbSettings.Host};Username={dbSettings.User};Password={dbSettings.Password};Database={dbSettings.Name}"; + var postgresSettings = new PostgresSettings + { + ConnString = connString + }; + services.For().Use(x => postgresSettings); + + services.For().Use().Singleton(); + services.For().Use().Singleton(); + services.For().Use().Singleton(); + } + else + { + throw new NotImplementedException($"{dbSettings.Type} is not supported"); + } services.Scan(_ => { diff --git a/src/BirdsiteLive/appsettings.json b/src/BirdsiteLive/appsettings.json index 08c587a..4e6acb9 100644 --- a/src/BirdsiteLive/appsettings.json +++ b/src/BirdsiteLive/appsettings.json @@ -9,8 +9,14 @@ "AllowedHosts": "*", "Instance": { "Domain": "domain.name", - "AdminEmail": "me@domain.name", - "PostgresConnString": "Host=127.0.0.1;Username=username;Password=password;Database=mydb" + "AdminEmail": "me@domain.name" + }, + "Db": { + "Type": "postgres", + "Host": "127.0.0.1", + "Name": "mydb", + "User": "username", + "Password": "password" }, "Twitter": { "ConsumerKey": "twitter.api.key",