From 790766f7532e42e411dfd3eaf0b2f135c81ff2e7 Mon Sep 17 00:00:00 2001 From: Nicolas Constant Date: Mon, 28 Dec 2020 02:19:11 -0500 Subject: [PATCH] better settings, ref #12 --- .../Settings/DbSettings.cs | 11 ++++++++ .../Settings/InstanceSettings.cs | 1 - src/BirdsiteLive.Common/Structs/DbTypes.cs | 7 +++++ src/BirdsiteLive/Startup.cs | 28 +++++++++++++------ src/BirdsiteLive/appsettings.json | 10 +++++-- 5 files changed, 46 insertions(+), 11 deletions(-) create mode 100644 src/BirdsiteLive.Common/Settings/DbSettings.cs create mode 100644 src/BirdsiteLive.Common/Structs/DbTypes.cs 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",