set the DefaultDBType as the default database option in the Installer and Add Site UI

This commit is contained in:
Shaun Walker 2021-06-11 08:43:46 -04:00
parent aa5aca3a8e
commit 8f944e29ac
4 changed files with 33 additions and 5 deletions

View File

@ -30,10 +30,17 @@
@if (_databases != null)
{
foreach (var database in _databases)
{
if (database.IsDefault)
{
<option value="@database.Name" selected>@Localizer[@database.Name]</option>
}
else
{
<option value="@database.Name">@Localizer[@database.Name]</option>
}
}
}
</select>
</td>
</tr>

View File

@ -129,9 +129,16 @@ else
<td>
<select id="databaseType" class="custom-select" value="@_databaseName" @onchange="(e => DatabaseChanged(e))">
@foreach (var database in _databases)
{
if (database.IsDefault)
{
<option value="@database.Name" selected>@Localizer[@database.Name]</option>
}
else
{
<option value="@database.Name">@Localizer[@database.Name]</option>
}
}
</select>
</td>
</tr>

View File

@ -1,6 +1,7 @@
using System.Collections.Generic;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Options;
using Oqtane.Infrastructure;
using Oqtane.Models;
using Oqtane.Shared;
@ -10,17 +11,25 @@ namespace Oqtane.Controllers
public class DatabaseController : Controller
{
private IOptions<List<Database>> _databaseOptions;
private IConfigManager _config;
public DatabaseController(IOptions<List<Database>> databaseOptions)
public DatabaseController(IOptions<List<Database>> databaseOptions, IConfigManager config)
{
_databaseOptions = databaseOptions;
_config = config;
}
// GET: api/<controller>
[HttpGet]
public IEnumerable<Models.Database> Get()
public IEnumerable<Database> Get()
{
return _databaseOptions.Value;
var databases = _databaseOptions.Value;
var master = _config.GetSetting(SettingKeys.DatabaseSection, SettingKeys.DatabaseTypeKey, "");
if (master != "" && databases.Exists(item => item.DBType == master))
{
databases.Find(item => item.DBType == master).IsDefault = true;
}
return databases;
}
}
}

View File

@ -19,5 +19,10 @@ namespace Oqtane.Models
/// Type of DB using the full namespace, like `Oqtane.Database.SqlServer.SqlServerDatabase, Oqtane.Database.SqlServer`
/// </summary>
public string DBType { get; set; }
/// <summary>
/// whether this item is the default database provider ( ie. specified by DefaultDBType in appsettings.json )
/// </summary>
public bool IsDefault { get; set; }
}
}