Removing can connect to database check so that Umbraco errors out on … (#13118)
* Removing can connect to database check so that Umbraco errors out on startup rather than trying to re-install when unable to connect to database. * Revert breaking change * Support installs of missing databases if the provider CanForceCreateDatabase. Else not Co-authored-by: Austin Gilbert <AGilbert@rbaconsulting.com>
This commit is contained in:
@@ -12,6 +12,7 @@ using Umbraco.Cms.Infrastructure.Migrations.Install;
|
||||
using Umbraco.Cms.Infrastructure.Persistence;
|
||||
using Umbraco.Cms.Web.Common.DependencyInjection;
|
||||
using Umbraco.Extensions;
|
||||
using Umbraco.Cms.Infrastructure.Persistence;
|
||||
using Constants = Umbraco.Cms.Core.Constants;
|
||||
|
||||
namespace Umbraco.Cms.Infrastructure.Install
|
||||
@@ -27,10 +28,10 @@ namespace Umbraco.Cms.Infrastructure.Install
|
||||
private readonly IUserAgentProvider _userAgentProvider;
|
||||
private readonly IUmbracoDatabaseFactory _umbracoDatabaseFactory;
|
||||
private readonly IFireAndForgetRunner _fireAndForgetRunner;
|
||||
private readonly IEnumerable<IDatabaseProviderMetadata> _databaseProviderMetadata;
|
||||
private InstallationType? _installationType;
|
||||
|
||||
public InstallHelper(
|
||||
DatabaseBuilder databaseBuilder,
|
||||
public InstallHelper(DatabaseBuilder databaseBuilder,
|
||||
ILogger<InstallHelper> logger,
|
||||
IUmbracoVersion umbracoVersion,
|
||||
IOptionsMonitor<ConnectionStrings> connectionStrings,
|
||||
@@ -38,7 +39,8 @@ namespace Umbraco.Cms.Infrastructure.Install
|
||||
ICookieManager cookieManager,
|
||||
IUserAgentProvider userAgentProvider,
|
||||
IUmbracoDatabaseFactory umbracoDatabaseFactory,
|
||||
IFireAndForgetRunner fireAndForgetRunner)
|
||||
IFireAndForgetRunner fireAndForgetRunner,
|
||||
IEnumerable<IDatabaseProviderMetadata> databaseProviderMetadata)
|
||||
{
|
||||
_logger = logger;
|
||||
_umbracoVersion = umbracoVersion;
|
||||
@@ -49,12 +51,40 @@ namespace Umbraco.Cms.Infrastructure.Install
|
||||
_userAgentProvider = userAgentProvider;
|
||||
_umbracoDatabaseFactory = umbracoDatabaseFactory;
|
||||
_fireAndForgetRunner = fireAndForgetRunner;
|
||||
_databaseProviderMetadata = databaseProviderMetadata;
|
||||
|
||||
// We need to initialize the type already, as we can't detect later, if the connection string is added on the fly.
|
||||
GetInstallationType();
|
||||
}
|
||||
|
||||
[Obsolete("Please use constructor that takes an IFireAndForgetRunner instead, scheduled for removal in Umbraco 12")]
|
||||
[Obsolete("Please use constructor that takes an IEnumerable<IDatabaseProviderMetadata> instead, scheduled for removal in Umbraco 12")]
|
||||
public InstallHelper(
|
||||
DatabaseBuilder databaseBuilder,
|
||||
ILogger<InstallHelper> logger,
|
||||
IUmbracoVersion umbracoVersion,
|
||||
IOptionsMonitor<ConnectionStrings> connectionStrings,
|
||||
IInstallationService installationService,
|
||||
ICookieManager cookieManager,
|
||||
IUserAgentProvider userAgentProvider,
|
||||
IUmbracoDatabaseFactory umbracoDatabaseFactory,
|
||||
IFireAndForgetRunner fireAndForgetRunner)
|
||||
: this(
|
||||
databaseBuilder,
|
||||
logger,
|
||||
umbracoVersion,
|
||||
connectionStrings,
|
||||
installationService,
|
||||
cookieManager,
|
||||
userAgentProvider,
|
||||
umbracoDatabaseFactory,
|
||||
fireAndForgetRunner,
|
||||
StaticServiceProvider.Instance.GetRequiredService<IEnumerable<IDatabaseProviderMetadata>>()
|
||||
)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
[Obsolete("Please use constructor that takes an IFireAndForgetRunner and IEnumerable<IDatabaseProviderMetadata> instead, scheduled for removal in Umbraco 12")]
|
||||
public InstallHelper(
|
||||
DatabaseBuilder databaseBuilder,
|
||||
ILogger<InstallHelper> logger,
|
||||
@@ -73,7 +103,8 @@ namespace Umbraco.Cms.Infrastructure.Install
|
||||
cookieManager,
|
||||
userAgentProvider,
|
||||
umbracoDatabaseFactory,
|
||||
StaticServiceProvider.Instance.GetRequiredService<IFireAndForgetRunner>())
|
||||
StaticServiceProvider.Instance.GetRequiredService<IFireAndForgetRunner>(),
|
||||
StaticServiceProvider.Instance.GetRequiredService<IEnumerable<IDatabaseProviderMetadata>>())
|
||||
{
|
||||
|
||||
}
|
||||
@@ -133,7 +164,7 @@ namespace Umbraco.Cms.Infrastructure.Install
|
||||
private bool IsBrandNewInstall =>
|
||||
_connectionStrings.CurrentValue.IsConnectionStringConfigured() == false ||
|
||||
_databaseBuilder.IsDatabaseConfigured == false ||
|
||||
_databaseBuilder.CanConnectToDatabase == false ||
|
||||
(_databaseBuilder.CanConnectToDatabase == false && _databaseProviderMetadata.CanForceCreateDatabase(_umbracoDatabaseFactory.SqlContext.SqlSyntax.DbProvider)) ||
|
||||
_databaseBuilder.IsUmbracoInstalled() == false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -96,7 +96,7 @@ namespace Umbraco.Cms.Infrastructure.Migrations.Install
|
||||
|
||||
public bool HasSomeNonDefaultUser()
|
||||
{
|
||||
using (var scope = _scopeProvider.CreateCoreScope())
|
||||
using (ICoreScope scope = _scopeProvider.CreateCoreScope())
|
||||
{
|
||||
// look for the super user with default password
|
||||
var sql = _scopeAccessor.AmbientScope?.Database.SqlContext.Sql()
|
||||
@@ -119,7 +119,7 @@ namespace Umbraco.Cms.Infrastructure.Migrations.Install
|
||||
|
||||
internal bool IsUmbracoInstalled()
|
||||
{
|
||||
using (var scope = _scopeProvider.CreateCoreScope(autoComplete: true))
|
||||
using (ICoreScope scope = _scopeProvider.CreateCoreScope(autoComplete: true))
|
||||
{
|
||||
return _scopeAccessor.AmbientScope?.Database.IsUmbracoInstalled() ?? false;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user