fix(qe-m2-03): parse supported Npgsql keys only and ignore custom options gracefully
This commit is contained in:
@@ -53,15 +53,32 @@ namespace QuantEngine.Core.Tests
|
||||
string connStr = rawDsn;
|
||||
if (rawDsn.Contains("host=") || rawDsn.Contains("dbname="))
|
||||
{
|
||||
connStr = rawDsn
|
||||
.Replace("options='-c search_path=quantengine'", "")
|
||||
.Replace("options=\"-c search_path=quantengine\"", "")
|
||||
.Replace("dbname=", "Database=")
|
||||
.Replace("user=", "Username=")
|
||||
.Replace("host=", "Host=")
|
||||
.Replace("port=", "Port=")
|
||||
.Trim();
|
||||
connStr = string.Join(";", connStr.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries)) + ";Search Path=quantengine";
|
||||
try
|
||||
{
|
||||
var builder = new NpgsqlConnectionStringBuilder();
|
||||
var parts = rawDsn.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
|
||||
foreach (var p in parts)
|
||||
{
|
||||
var kv = p.Split('=', 2);
|
||||
if (kv.Length == 2)
|
||||
{
|
||||
string key = kv[0].Trim().ToLowerInvariant();
|
||||
string val = kv[1].Trim().Trim('\'').Trim('"');
|
||||
if (key == "host") builder.Host = val;
|
||||
else if (key == "port" && int.TryParse(val, out var pi)) builder.Port = pi;
|
||||
else if (key == "dbname") builder.Database = val;
|
||||
else if (key == "user") builder.Username = val;
|
||||
else if (key == "password") builder.Password = val;
|
||||
}
|
||||
}
|
||||
builder.SearchPath = "quantengine";
|
||||
connStr = builder.ConnectionString;
|
||||
}
|
||||
catch
|
||||
{
|
||||
// Fallback to rawDsn if builder logic fails
|
||||
connStr = rawDsn;
|
||||
}
|
||||
}
|
||||
|
||||
try
|
||||
|
||||
Reference in New Issue
Block a user