v10: Use ForceCreateDatabase during unattended install and extend GetUmbracoConnectionString extension methods (#12397)

* Add extension methods to get the Umbraco connection string/provider name from configuration

* Added tests for configuration extension methods.

* Fix issue with InstallMissingDatabase and ForceCreateDatabase

* Fix comments

* Revert casing change in GenerateConnectionString

* Re-add AddOptions (without config binding) to fix test

* Update src/Umbraco.Core/Configuration/Models/ConnectionStrings.cs

Co-authored-by: Ronald Barendse <ronald@barend.se>

* Update src/Umbraco.Core/Configuration/Models/ConnectionStrings.cs

* Update src/Umbraco.Infrastructure/Runtime/RuntimeState.cs

* Whitespace and documentation updates

* Add DatabaseProviderMetadataExtensions

* Filter before ordering

* Replace DataDirectory placeholder when setting connection string

Co-authored-by: Andy Butland <abutland73@gmail.com>
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
This commit is contained in:
Ronald Barendse
2022-05-17 12:59:01 +02:00
committed by GitHub
parent e82bcb1b76
commit 8e6e262c7f
15 changed files with 487 additions and 243 deletions

View File

@@ -1,7 +1,4 @@
using System;
using System.Collections.Generic;
using System.Data.Common;
using System.Linq;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using Umbraco.Cms.Core;
@@ -139,20 +136,15 @@ namespace Umbraco.Cms.Infrastructure.Migrations.Install
// if the database model is null then we will attempt quick install.
if (databaseSettings == null)
{
providerMeta = _databaseProviderMetadata
.OrderBy(x => x.SortOrder)
.Where(x => x.SupportsQuickInstall)
.FirstOrDefault(x => x.IsAvailable);
providerMeta = _databaseProviderMetadata.GetAvailable(true).FirstOrDefault();
databaseSettings = new DatabaseModel
{
DatabaseName = providerMeta?.DefaultDatabaseName!,
DatabaseName = providerMeta?.DefaultDatabaseName!
};
}
else
{
providerMeta = _databaseProviderMetadata
.FirstOrDefault(x => x.Id == databaseSettings.DatabaseProviderMetadataId);
providerMeta = _databaseProviderMetadata.FirstOrDefault(x => x.Id == databaseSettings.DatabaseProviderMetadataId);
}
if (providerMeta == null)
@@ -177,7 +169,6 @@ namespace Umbraco.Cms.Infrastructure.Migrations.Install
return true;
}
private void Configure(string connectionString, string? providerName, bool installMissingDatabase)
{
// Update existing connection string