Move Available Databases to appsettings and use IOptions

This commit is contained in:
Charles Nurse 2021-05-25 15:03:27 -07:00
parent bb92011641
commit d280a4aa01
3 changed files with 50 additions and 45 deletions

View File

@ -1,5 +1,7 @@
using System.Collections.Generic; using System.Collections.Generic;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Options;
using Oqtane.Models;
using Oqtane.Shared; using Oqtane.Shared;
namespace Oqtane.Controllers namespace Oqtane.Controllers
@ -7,56 +9,18 @@ namespace Oqtane.Controllers
[Route(ControllerRoutes.ApiRoute)] [Route(ControllerRoutes.ApiRoute)]
public class DatabaseController : Controller public class DatabaseController : Controller
{ {
public DatabaseController() { } private IOptions<List<Database>> _databaseOptions;
public DatabaseController(IOptions<List<Database>> databaseOptions)
{
_databaseOptions = databaseOptions;
}
// GET: api/<controller> // GET: api/<controller>
[HttpGet] [HttpGet]
public IEnumerable<Models.Database> Get() public IEnumerable<Models.Database> Get()
{ {
var databases = new List<Models.Database> return _databaseOptions.Value;
{
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;
} }
} }
} }

View File

@ -1,4 +1,5 @@
using System; using System;
using System.Collections.Generic;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using System.Net.Http; using System.Net.Http;
@ -15,6 +16,7 @@ using Microsoft.Extensions.Hosting;
using Microsoft.OpenApi.Models; using Microsoft.OpenApi.Models;
using Oqtane.Extensions; using Oqtane.Extensions;
using Oqtane.Infrastructure; using Oqtane.Infrastructure;
using Oqtane.Models;
using Oqtane.Repository; using Oqtane.Repository;
using Oqtane.Security; using Oqtane.Security;
using Oqtane.Services; using Oqtane.Services;
@ -56,6 +58,8 @@ namespace Oqtane
// Register localization services // Register localization services
services.AddLocalization(options => options.ResourcesPath = "Resources"); services.AddLocalization(options => options.ResourcesPath = "Resources");
services.AddOptions<List<Database>>().Bind(Configuration.GetSection("AvailableDatabases"));
services.AddServerSideBlazor().AddCircuitOptions(options => services.AddServerSideBlazor().AddCircuitOptions(options =>
{ {
if (_env.IsDevelopment()) if (_env.IsDevelopment())

View File

@ -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": { "Database": {
"DatabaseType": "" "DatabaseType": ""
}, },