From d280a4aa01f3eb6d60ed73e612b0d4d398991669 Mon Sep 17 00:00:00 2001 From: Charles Nurse Date: Tue, 25 May 2021 15:03:27 -0700 Subject: [PATCH] Move Available Databases to appsettings and use IOptions --- .../Controllers/DatabaseController.cs | 54 ++++--------------- Oqtane.Server/Startup.cs | 4 ++ Oqtane.Server/appsettings.json | 37 +++++++++++++ 3 files changed, 50 insertions(+), 45 deletions(-) diff --git a/Oqtane.Server/Controllers/DatabaseController.cs b/Oqtane.Server/Controllers/DatabaseController.cs index 6e9f7106..d3993505 100644 --- a/Oqtane.Server/Controllers/DatabaseController.cs +++ b/Oqtane.Server/Controllers/DatabaseController.cs @@ -1,5 +1,7 @@ using System.Collections.Generic; using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Options; +using Oqtane.Models; using Oqtane.Shared; namespace Oqtane.Controllers @@ -7,56 +9,18 @@ namespace Oqtane.Controllers [Route(ControllerRoutes.ApiRoute)] public class DatabaseController : Controller { - public DatabaseController() { } + private IOptions> _databaseOptions; + + public DatabaseController(IOptions> databaseOptions) + { + _databaseOptions = databaseOptions; + } // GET: api/ [HttpGet] public IEnumerable Get() { - var databases = new List - { - new() - { - Name = "LocalDB", - FriendlyName = "Local Database", - ControlType = "Oqtane.Installer.Controls.LocalDBConfig, Oqtane.Client", - DBType = "Oqtane.Database.SqlServer.SqlServerDatabase, Oqtane.Database.SqlServer", - Package = "Oqtane.Database.SqlServer" - }, - new() - { - Name = "SqlServer", - FriendlyName = "SQL Server", - ControlType = "Oqtane.Installer.Controls.SqlServerConfig, Oqtane.Client", - DBType = "Oqtane.Database.SqlServer.SqlServerDatabase, Oqtane.Database.SqlServer", - Package = "Oqtane.Database.SqlServer" - }, - new() - { - Name = "Sqlite", - FriendlyName = "Sqlite", - ControlType = "Oqtane.Installer.Controls.SqliteConfig, Oqtane.Client", - DBType = "Oqtane.Database.Sqlite.SqliteDatabase, Oqtane.Database.Sqlite", - Package = "Oqtane.Database.Sqlite" - }, - new() - { - Name = "MySQL", - FriendlyName = "MySQL", - ControlType = "Oqtane.Installer.Controls.MySQLConfig, Oqtane.Client", - DBType = "Oqtane.Database.MySQL.MySQLDatabase, Oqtane.Database.MySQL", - Package = "Oqtane.Database.MySQL" - }, - new() - { - Name = "PostgreSQL", - FriendlyName = "PostgreSQL", - ControlType = "Oqtane.Installer.Controls.PostgreSQLConfig, Oqtane.Client", - DBType = "Oqtane.Database.PostgreSQL.PostgreSQLDatabase, Oqtane.Database.PostgreSQL", - Package = "Oqtane.Database.PostgreSQL" - } - }; - return databases; + return _databaseOptions.Value; } } } diff --git a/Oqtane.Server/Startup.cs b/Oqtane.Server/Startup.cs index 1188e136..0a1dd1cd 100644 --- a/Oqtane.Server/Startup.cs +++ b/Oqtane.Server/Startup.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.IO; using System.Linq; using System.Net.Http; @@ -15,6 +16,7 @@ using Microsoft.Extensions.Hosting; using Microsoft.OpenApi.Models; using Oqtane.Extensions; using Oqtane.Infrastructure; +using Oqtane.Models; using Oqtane.Repository; using Oqtane.Security; using Oqtane.Services; @@ -56,6 +58,8 @@ namespace Oqtane // Register localization services services.AddLocalization(options => options.ResourcesPath = "Resources"); + services.AddOptions>().Bind(Configuration.GetSection("AvailableDatabases")); + services.AddServerSideBlazor().AddCircuitOptions(options => { if (_env.IsDevelopment()) diff --git a/Oqtane.Server/appsettings.json b/Oqtane.Server/appsettings.json index 68432407..cb168bb3 100644 --- a/Oqtane.Server/appsettings.json +++ b/Oqtane.Server/appsettings.json @@ -1,4 +1,41 @@ { + "AvailableDatabases": [ + { + "Name": "LocalDB", + "FriendlyName": "Local Database", + "ControlType": "Oqtane.Installer.Controls.LocalDBConfig, Oqtane.Client", + "DBType": "Oqtane.Database.SqlServer.SqlServerDatabase, Oqtane.Database.SqlServer", + "Package": "Oqtane.Database.SqlServer" + }, + { + "Name": "SqlServer", + "FriendlyName": "SQL Server", + "ControlType": "Oqtane.Installer.Controls.SqlServerConfig, Oqtane.Client", + "DBType": "Oqtane.Database.SqlServer.SqlServerDatabase, Oqtane.Database.SqlServer", + "Package": "Oqtane.Database.SqlServer" + }, + { + "Name": "Sqlite", + "FriendlyName": "Sqlite", + "ControlType": "Oqtane.Installer.Controls.SqliteConfig, Oqtane.Client", + "DBType": "Oqtane.Database.Sqlite.SqliteDatabase, Oqtane.Database.Sqlite", + "Package": "Oqtane.Database.Sqlite" + }, + { + "Name": "MySQL", + "FriendlyName": "MySQL", + "ControlType": "Oqtane.Installer.Controls.MySQLConfig, Oqtane.Client", + "DBType": "Oqtane.Database.MySQL.MySQLDatabase, Oqtane.Database.MySQL", + "Package": "Oqtane.Database.MySQL" + }, + { + "Name": "PostgreSQL", + "FriendlyName": "PostgreSQL", + "ControlType": "Oqtane.Installer.Controls.PostgreSQLConfig, Oqtane.Client", + "DBType": "Oqtane.Database.PostgreSQL.PostgreSQLDatabase, Oqtane.Database.PostgreSQL", + "Package": "Oqtane.Database.PostgreSQL" + } + ], "Database": { "DatabaseType": "" },