diff --git a/src/Moryx.CommandCenter.Web/src/databases/container/DatabaseModel.tsx b/src/Moryx.CommandCenter.Web/src/databases/container/DatabaseModel.tsx index 2747a0ce4..bd041d747 100644 --- a/src/Moryx.CommandCenter.Web/src/databases/container/DatabaseModel.tsx +++ b/src/Moryx.CommandCenter.Web/src/databases/container/DatabaseModel.tsx @@ -377,7 +377,7 @@ class DatabaseModel extends React.Component - + diff --git a/src/Moryx.Model.PostgreSQL/NpgsqlModelConfigurator.cs b/src/Moryx.Model.PostgreSQL/NpgsqlModelConfigurator.cs index 16ec5c904..355d610da 100644 --- a/src/Moryx.Model.PostgreSQL/NpgsqlModelConfigurator.cs +++ b/src/Moryx.Model.PostgreSQL/NpgsqlModelConfigurator.cs @@ -6,6 +6,7 @@ using System.Data.Common; using System.Diagnostics; using System.IO; +using System.Runtime.CompilerServices; using System.Threading.Tasks; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Logging; @@ -94,6 +95,41 @@ private static NpgsqlConnectionStringBuilder CreateConnectionStringBuilder(IData return builder; } + /// + /// Replaces given config's database with "postgres". + /// This config can be used to check availability of + /// the database server. + /// + /// + /// Modified copy of given config + private static IDatabaseConfig CreateTestDatabaseConfig(IDatabaseConfig config) + { + var testConfig = new DatabaseConfig + { + ConfiguratorTypename = config.ConfiguratorTypename, + ConnectionSettings = config.ConnectionSettings, + ConfigState = config.ConfigState, + LoadError = config.LoadError + }; + + var builder = new NpgsqlConnectionStringBuilder(testConfig.ConnectionSettings.ConnectionString) + { + Database = "postgres" + }; + + testConfig.ConnectionSettings.ConnectionString = builder.ConnectionString; + + return testConfig; + } + + /// + public override Task TestConnection(IDatabaseConfig config) + { + // Using the "postgres" database to check the server's availability. + // might lead to edge-case when "postgres" database has been deleted. + return base.TestConnection(CreateTestDatabaseConfig(config)); + } + /// public override Task RestoreDatabase(IDatabaseConfig config, string filePath) {