private InstallState GetInstallState() { var installState = InstallState.Unknown; // TODO: we need to do a null check here since this could be entirely missing and we end up with a null ref // exception in the installer. var databaseSettings = _connectionStrings.Get(Constants.System.UmbracoConnectionName); var hasConnString = databaseSettings != null && _databaseBuilder.IsDatabaseConfigured; if (hasConnString) { installState = (installState | InstallState.HasConnectionString) & ~InstallState.Unknown; } var connStringConfigured = databaseSettings?.IsConnectionStringConfigured() ?? false; if (connStringConfigured) { installState = (installState | InstallState.ConnectionStringConfigured) & ~InstallState.Unknown; } var factory = _dbProviderFactoryCreator.CreateFactory(databaseSettings?.ProviderName); var canConnect = connStringConfigured && DbConnectionExtensions.IsConnectionAvailable(databaseSettings?.ConnectionString, factory); if (canConnect) { installState = (installState | InstallState.CanConnect) & ~InstallState.Unknown; } var umbracoInstalled = canConnect ? _databaseBuilder.IsUmbracoInstalled() : false; if (umbracoInstalled) { installState = (installState | InstallState.UmbracoInstalled) & ~InstallState.Unknown; } var hasNonDefaultUser = umbracoInstalled ? _databaseBuilder.HasSomeNonDefaultUser() : false; if (hasNonDefaultUser) { installState = (installState | InstallState.HasNonDefaultUser) & ~InstallState.Unknown; } return(installState); }
/// <summary> /// Verifies whether a it is possible to connect to a database. /// </summary> public bool CanConnect(string?connectionString, string providerName) { DbProviderFactory?factory = _dbProviderFactoryCreator.CreateFactory(providerName); return(DbConnectionExtensions.IsConnectionAvailable(connectionString, factory)); }