From 0fe1b1a2e1c0e8a0e81162add7ba9c7d96a2ed82 Mon Sep 17 00:00:00 2001 From: Alberto Spelta Date: Sun, 14 May 2023 16:50:34 +0200 Subject: [PATCH] Add ConnectionStringHelper.GetConnectionStringProperties Use OleDbConnectionStringBuilder.DataSource property to get the server name instead of using the hardcoded "Data Source" key. --- .../Helpers/ConnectionStringHelper.cs | 47 +++---------------- src/Models/PBICloudDataset.cs | 5 +- 2 files changed, 9 insertions(+), 43 deletions(-) diff --git a/src/Infrastructure/Helpers/ConnectionStringHelper.cs b/src/Infrastructure/Helpers/ConnectionStringHelper.cs index 03192712..e4a7df43 100644 --- a/src/Infrastructure/Helpers/ConnectionStringHelper.cs +++ b/src/Infrastructure/Helpers/ConnectionStringHelper.cs @@ -4,10 +4,7 @@ using Sqlbi.Bravo.Models; using System; using System.Data.OleDb; - using System.Diagnostics.CodeAnalysis; - using System.Globalization; using System.Net; - using System.Threading; internal static class ConnectionStringHelper { @@ -143,47 +140,15 @@ static string Build(string serverName, string databaseName, string accessToken) } } - public static string? FindServerName(string? connectionString) + public static (string ServerName, string? DatabaseName) GetConnectionStringProperties(string? connectionString) { - if (TryGetValue(connectionString, DataSourceKey, out var serverName)) - { - return serverName; - } - - return null; - } - - public static string? FindDatabaseName(string? connectionString) - { - if (TryGetValue(connectionString, InitialCatalogKey, out var databaseName)) - { - return databaseName; - } - - return null; - } + var builder = new OleDbConnectionStringBuilder(connectionString); - private static bool TryGetValue(string? connectionString, string keyword, [NotNullWhen(true)] out string? value) - { - value = null; - - OleDbConnectionStringBuilder builder; - try - { - builder = new OleDbConnectionStringBuilder(connectionString); - } - catch (ArgumentException) - { - return false; - } - - if (builder.TryGetValue(keyword, out var objectValue) && objectValue is string stringValue) - { - value = stringValue; - return true; - } + var serverName = builder.DataSource; + _ = builder.TryGetValue(InitialCatalogKey, out var initialCatalog); + var databaseName = (string?)initialCatalog; - return false; + return (serverName, databaseName); } } } \ No newline at end of file diff --git a/src/Models/PBICloudDataset.cs b/src/Models/PBICloudDataset.cs index 6e5018d8..15645b5b 100644 --- a/src/Models/PBICloudDataset.cs +++ b/src/Models/PBICloudDataset.cs @@ -172,8 +172,9 @@ internal static PBICloudDataset CreateFrom(IPBICloudEnvironment environment, Clo } else if (dataset.IsOnPremModel == true) { - dataset.ExternalServerName = dataset.ServerName = ConnectionStringHelper.FindServerName(dataset.OnPremModelConnectionString); - dataset.ExternalDatabaseName = dataset.DatabaseName = ConnectionStringHelper.FindDatabaseName(dataset.OnPremModelConnectionString); + var properties = ConnectionStringHelper.GetConnectionStringProperties(dataset.OnPremModelConnectionString); + dataset.ExternalServerName = dataset.ServerName = properties.ServerName; + dataset.ExternalDatabaseName = dataset.DatabaseName = properties.DatabaseName; } else {