diff --git a/src/dbup-postgresql/PostgresqlExtensions.cs b/src/dbup-postgresql/PostgresqlExtensions.cs index 5aef97b..66ce93f 100644 --- a/src/dbup-postgresql/PostgresqlExtensions.cs +++ b/src/dbup-postgresql/PostgresqlExtensions.cs @@ -1,6 +1,7 @@ using System; using System.Data; using System.Security.Cryptography.X509Certificates; +using System.Text.RegularExpressions; using DbUp; using DbUp.Builder; using DbUp.Engine.Output; @@ -15,6 +16,7 @@ /// public static class PostgresqlExtensions { + private static readonly string pattern= @"(?i)SearchPath=([^;]+)"; /// /// Creates an upgrader for PostgreSQL databases. /// @@ -24,8 +26,21 @@ public static class PostgresqlExtensions /// A builder for a database upgrader designed for PostgreSQL databases. /// public static UpgradeEngineBuilder PostgresqlDatabase(this SupportedDatabases supported, string connectionString) - => PostgresqlDatabase(supported, connectionString, null); - + => PostgresqlDatabase(supported, connectionString, GetDefaultSchemaByConnectionString(connectionString)); + /// + /// Get connection string use parameter SearchPath for defaultSchema + /// + /// PostgreSQL database connection string. + /// + private static string GetDefaultSchemaByConnectionString(string connectionString) + { + Match match = Regex.Match(connectionString, pattern); + if (match.Success) + { + return match.Groups[1].Value; + } + return null; + } /// /// Creates an upgrader for PostgreSQL databases. ///