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:
@@ -1,35 +1,24 @@
|
||||
// Copyright (c) Umbraco.
|
||||
// See LICENSE for more details.
|
||||
|
||||
using System;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Umbraco.Cms.Core;
|
||||
using Umbraco.Cms.Core.Configuration.Models;
|
||||
|
||||
namespace Umbraco.Extensions
|
||||
namespace Umbraco.Extensions;
|
||||
|
||||
/// <summary>
|
||||
/// Extension methods for a connection string.
|
||||
/// </summary>
|
||||
public static class ConnectionStringExtensions
|
||||
{
|
||||
public static class ConnectionStringExtensions
|
||||
{
|
||||
public static bool IsConnectionStringConfigured(this ConnectionStrings connectionString)
|
||||
=> connectionString != null &&
|
||||
!string.IsNullOrWhiteSpace(connectionString.ConnectionString) &&
|
||||
!string.IsNullOrWhiteSpace(connectionString.ProviderName);
|
||||
|
||||
/// <summary>
|
||||
/// Gets a connection string from configuration with placeholders replaced.
|
||||
/// </summary>
|
||||
public static string? GetUmbracoConnectionString(
|
||||
this IConfiguration configuration,
|
||||
string connectionStringName = Constants.System.UmbracoConnectionName) =>
|
||||
configuration.GetConnectionString(connectionStringName).ReplaceDataDirectoryPlaceholder();
|
||||
|
||||
/// <summary>
|
||||
/// Replaces instances of the |DataDirectory| placeholder in a string with the value of AppDomain DataDirectory.
|
||||
/// </summary>
|
||||
public static string? ReplaceDataDirectoryPlaceholder(this string input)
|
||||
{
|
||||
var dataDirectory = AppDomain.CurrentDomain.GetData("DataDirectory")?.ToString();
|
||||
return input?.Replace(ConnectionStrings.DataDirectoryPlaceholder, dataDirectory);
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// Determines whether the connection string is configured (set to a non-empty value).
|
||||
/// </summary>
|
||||
/// <param name="connectionString">The connection string.</param>
|
||||
/// <returns>
|
||||
/// <c>true</c> if the connection string is configured; otherwise, <c>false</c>.
|
||||
/// </returns>
|
||||
public static bool IsConnectionStringConfigured(this ConnectionStrings connectionString)
|
||||
=> connectionString != null &&
|
||||
!string.IsNullOrWhiteSpace(connectionString.ConnectionString) &&
|
||||
!string.IsNullOrWhiteSpace(connectionString.ProviderName);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user