diff --git a/Demo/Program.cs b/Demo/Program.cs index 3ac19fb..616344a 100644 --- a/Demo/Program.cs +++ b/Demo/Program.cs @@ -1,7 +1,7 @@ using Libsql.Client; // Create a database client using the static factory method -var dbClient = await DatabaseClient.Create(opts => { +using var dbClient = await DatabaseClient.Create(opts => { opts.Url = ":memory:"; }); diff --git a/Libsql.Client.Tests/EmbeddedReplicaTests.cs b/Libsql.Client.Tests/EmbeddedReplicaTests.cs index f8bf8c8..6da97a2 100644 --- a/Libsql.Client.Tests/EmbeddedReplicaTests.cs +++ b/Libsql.Client.Tests/EmbeddedReplicaTests.cs @@ -2,7 +2,7 @@ namespace Libsql.Client.Tests; -public class EmbeddedReplicaTests : IClassFixture +public class EmbeddedReplicaTests : IClassFixture, IDisposable { public IDatabaseClient DatabaseClient { get; } @@ -38,4 +38,10 @@ public async Task CanCallSync() { await DatabaseClient.Sync(); } + + public void Dispose() + { + DatabaseClient.Dispose(); + GC.SuppressFinalize(this); + } } diff --git a/Libsql.Client.Tests/PositionalArgumentTests.cs b/Libsql.Client.Tests/PositionalArgumentTests.cs index a2fe5f1..8303345 100644 --- a/Libsql.Client.Tests/PositionalArgumentTests.cs +++ b/Libsql.Client.Tests/PositionalArgumentTests.cs @@ -1,6 +1,6 @@ namespace Libsql.Client.Tests; -public class PositionalArgumentTests +public class PositionalArgumentTests : IDisposable { private readonly IDatabaseClient _db = DatabaseClient.Create().Result; @@ -86,4 +86,10 @@ public async Task BindBlobParameter() Assert.Equal(new byte[] { 1, 2, 3 }, blob.Value); } + + public void Dispose() + { + _db.Dispose(); + GC.SuppressFinalize(this); + } } diff --git a/Libsql.Client.Tests/RemoteTests.cs b/Libsql.Client.Tests/RemoteTests.cs index f11ec99..49174a4 100644 --- a/Libsql.Client.Tests/RemoteTests.cs +++ b/Libsql.Client.Tests/RemoteTests.cs @@ -2,7 +2,7 @@ namespace Libsql.Client.Tests; -public class RemoteTests : IClassFixture +public class RemoteTests : IClassFixture, IDisposable { public IDatabaseClient DatabaseClient { get; } @@ -28,4 +28,10 @@ public async Task CanConnectAndQueryRemoteDatabase() var value = Assert.IsType(count); Assert.Equal(3503, value.Value); } + + public void Dispose() + { + DatabaseClient.Dispose(); + GC.SuppressFinalize(this); + } } diff --git a/Libsql.Client.Tests/ResultSetTests.cs b/Libsql.Client.Tests/ResultSetTests.cs index 5ee4200..6f71fde 100644 --- a/Libsql.Client.Tests/ResultSetTests.cs +++ b/Libsql.Client.Tests/ResultSetTests.cs @@ -1,6 +1,6 @@ namespace Libsql.Client.Tests; -public class ResultSetTests +public class ResultSetTests : IDisposable { private readonly IDatabaseClient _db = DatabaseClient.Create().Result; @@ -90,4 +90,10 @@ public async Task Changes_ReturnsExectedValue_WhenMultipleUpdates() Assert.Equal(10ul, rs2.RowsAffected); } + + public void Dispose() + { + _db.Dispose(); + GC.SuppressFinalize(this); + } } diff --git a/Libsql.Client.Tests/RowsTests.cs b/Libsql.Client.Tests/RowsTests.cs index 021bdc7..0ac54f3 100644 --- a/Libsql.Client.Tests/RowsTests.cs +++ b/Libsql.Client.Tests/RowsTests.cs @@ -1,6 +1,6 @@ namespace Libsql.Client.Tests; -public class RowsTests +public class RowsTests : IDisposable { private readonly IDatabaseClient _db = DatabaseClient.Create().Result; @@ -38,4 +38,10 @@ public async Task Rows_CanPartiallyIterateTwice() var expected = new []{new Integer(1), new Integer(2), new Integer(3)}; Assert.Equal(expected, secondArray.Select(x => x.First() as Integer).ToArray()); } + + public void Dispose() + { + _db.Dispose(); + GC.SuppressFinalize(this); + } } \ No newline at end of file diff --git a/Libsql.Client.Tests/SelectTests.cs b/Libsql.Client.Tests/SelectTests.cs index d634d4c..a812dec 100644 --- a/Libsql.Client.Tests/SelectTests.cs +++ b/Libsql.Client.Tests/SelectTests.cs @@ -1,6 +1,6 @@ namespace Libsql.Client.Tests; -public class SelectTests +public class SelectTests : IDisposable { private readonly IDatabaseClient _db = DatabaseClient.Create().Result; @@ -118,4 +118,10 @@ public async Task SelectNullType() var value = row.First(); Assert.IsType(value); } + + public void Dispose() + { + _db.Dispose(); + GC.SuppressFinalize(this); + } } diff --git a/Libsql.Client/DatabaseWrapper.cs b/Libsql.Client/DatabaseWrapper.cs index d8d6cc4..c543b2f 100644 --- a/Libsql.Client/DatabaseWrapper.cs +++ b/Libsql.Client/DatabaseWrapper.cs @@ -6,7 +6,7 @@ namespace Libsql.Client { - internal class DatabaseWrapper : IDatabaseClient, IDisposable + internal class DatabaseWrapper : IDatabaseClient { private libsql_database_t _db; private libsql_connection_t _connection; diff --git a/Libsql.Client/IDatabaseClient.cs b/Libsql.Client/IDatabaseClient.cs index f84d023..3285d55 100644 --- a/Libsql.Client/IDatabaseClient.cs +++ b/Libsql.Client/IDatabaseClient.cs @@ -1,3 +1,4 @@ +using System; using System.Threading.Tasks; namespace Libsql.Client @@ -5,7 +6,7 @@ namespace Libsql.Client /// /// Interface for a Libsql database client. /// - public interface IDatabaseClient + public interface IDatabaseClient : IDisposable { /// /// Executes the given SQL query and returns the result set. diff --git a/README.md b/README.md index e973069..7c10f7b 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ For an example, see the Demo project in the repository. ```csharp // Create an in-memory database. -var dbClient = DatabaseClient.Create(opts => { +var dbClient = await DatabaseClient.Create(opts => { opts.Url = ":memory:"; }); ``` @@ -80,7 +80,7 @@ dbClient.Dispose(); or with a `using` statement: ```csharp -using (var dbClient = DatabaseClient.Create(opts => { +using (var dbClient = await DatabaseClient.Create(opts => { opts.Url = ":memory:"; })) {