Skip to content

Commit 9a7d742

Browse files
committed
Npgsql/Geo: Improve connection handling as suggested by CodeRabbit
1 parent 27f61ef commit 9a7d742

File tree

2 files changed

+10
-6
lines changed

2 files changed

+10
-6
lines changed

by-language/csharp-npgsql/DemoProgram.cs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@ await Parser.Default.ParseArguments<Options>(args)
1818
var connString = $"Host={options.Host};Port={options.Port};SSL Mode={options.SslMode};" +
1919
$"Username={options.Username};Password={options.Password};Database={options.Database}";
2020

21-
await using var conn = GetConnection(connString);
21+
await using var dataSource = GetDataSource(connString);
22+
var conn = dataSource.OpenConnection();
2223

2324
await DatabaseWorkloads.SystemQueryExample(conn);
2425
await DatabaseWorkloads.BasicConversationExample(conn);
@@ -32,12 +33,14 @@ await Parser.Default.ParseArguments<Options>(args)
3233
await dwt.ArrayPocoExample();
3334
await dwt.GeoJsonTypesExample();
3435
conn.Close();
36+
dataSource.Dispose();
3537
});
3638

3739
}
3840

39-
public static NpgsqlConnection GetConnection(string connString)
41+
public static NpgsqlDataSource GetDataSource(string connString)
4042
{
43+
// It's just a testing rig. Do NOT log database credentials in production.
4144
Console.WriteLine($"Connecting to database: {connString}\n");
4245

4346
// Enable JSON POCO mapping and PostGIS/GeoJSON Type Plugin.
@@ -55,9 +58,7 @@ public static NpgsqlConnection GetConnection(string connString)
5558
// see also https://github.com/npgsql/npgsql/issues/2411.
5659
// dataSourceBuilder.UseGeoJson();
5760

58-
var dataSource = dataSourceBuilder.Build();
59-
var conn = dataSource.OpenConnection();
60-
return conn;
61+
return dataSourceBuilder.Build();
6162
}
6263

6364
public class Options

by-language/csharp-npgsql/tests/DemoProgramTest.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ namespace demo.tests
1414

1515
public class DatabaseFixture : IDisposable
1616
{
17+
public NpgsqlDataSource Source { get; private set; }
1718
public NpgsqlConnection Db { get; private set; }
1819

1920
public DatabaseFixture()
@@ -23,12 +24,14 @@ public DatabaseFixture()
2324
{
2425
CRATEDB_DSN = $"Host=localhost;Port=5432;Username=crate;Password=;Database=testdrive";
2526
}
26-
Db = DemoProgram.GetConnection(CRATEDB_DSN);
27+
Source = DemoProgram.GetDataSource(CRATEDB_DSN);
28+
Db = Source.OpenConnection();
2729
}
2830

2931
public void Dispose()
3032
{
3133
Db.Close();
34+
Source.Dispose();
3235
}
3336

3437
}

0 commit comments

Comments
 (0)