diff --git a/CodeGenerator/CodeGenerator.cs b/CodeGenerator/CodeGenerator.cs index d016814a..a5e69d9d 100644 --- a/CodeGenerator/CodeGenerator.cs +++ b/CodeGenerator/CodeGenerator.cs @@ -18,7 +18,9 @@ public class CodeGenerator private static readonly string[] ResharperDisables = [ "UnusedAutoPropertyAccessor.Global", - "NotAccessedPositionalProperty.Global" + "NotAccessedPositionalProperty.Global", + "ConvertToUsingDeclaration", + "UseAwaitUsing" ]; private string? _namespaceName; diff --git a/Drivers/Generators/CopyFromDeclareGen.cs b/Drivers/Generators/CopyFromDeclareGen.cs index de0bc762..c9372cbf 100644 --- a/Drivers/Generators/CopyFromDeclareGen.cs +++ b/Drivers/Generators/CopyFromDeclareGen.cs @@ -24,40 +24,19 @@ private string GetMethodBody(string queryTextConstant, Query query) var (establishConnection, connectionOpen) = dbDriver.EstablishConnection(query); var beginBinaryImport = $"{Variable.Connection.AsVarName()}.BeginBinaryImportAsync({queryTextConstant}"; var addRowsToCopyCommand = AddRowsToCopyCommand(query); - - if (dbDriver.Options.DotnetFramework.LatestDotnetSupported()) - return GetAsLatest(); - return GetAsLegacy(); - - string GetAsLatest() - { - return $""" - await using {establishConnection}; - {connectionOpen.AppendSemicolonUnlessEmpty()} - await {Variable.Connection.AsVarName()}.OpenAsync(); - await using var {Variable.Writer.AsVarName()} = await {beginBinaryImport}); - {addRowsToCopyCommand} - await {Variable.Writer.AsVarName()}.CompleteAsync(); - await {Variable.Connection.AsVarName()}.CloseAsync(); - """; - } - - string GetAsLegacy() - { - return $$""" - using ({{establishConnection}}) + return $$""" + using ({{establishConnection}}) + { + {{connectionOpen.AppendSemicolonUnlessEmpty()}} + await {{Variable.Connection.AsVarName()}}.OpenAsync(); + using (var {{Variable.Writer.AsVarName()}} = await {{beginBinaryImport}})) { - {{connectionOpen.AppendSemicolonUnlessEmpty()}} - await {{Variable.Connection.AsVarName()}}.OpenAsync(); - using (var {{Variable.Writer.AsVarName()}} = await {{beginBinaryImport}})) - { - {{addRowsToCopyCommand}} - await {{Variable.Writer.AsVarName()}}.CompleteAsync(); - } - await {{Variable.Connection.AsVarName()}}.CloseAsync(); + {{addRowsToCopyCommand}} + await {{Variable.Writer.AsVarName()}}.CompleteAsync(); } - """; - } + await {{Variable.Connection.AsVarName()}}.CloseAsync(); + } + """; } private string AddRowsToCopyCommand(Query query) diff --git a/Drivers/Generators/ExecDeclareGen.cs b/Drivers/Generators/ExecDeclareGen.cs index ea78e928..2a2e8888 100644 --- a/Drivers/Generators/ExecDeclareGen.cs +++ b/Drivers/Generators/ExecDeclareGen.cs @@ -26,12 +26,7 @@ private string GetMethodBody(string queryTextConstant, Query query) var createSqlCommand = dbDriver.CreateSqlCommand(queryTextConstant); var commandParameters = CommonGen.GetCommandParameters(query.Params); var executeScalar = $"await {Variable.Command.AsVarName()}.ExecuteScalarAsync();"; - - if (dbDriver.Options.UseDapper) - return GetAsDapper(); - if (dbDriver.Options.DotnetFramework.LatestDotnetSupported()) - return GetAsLatest(); - return GetAsLegacy(); + return dbDriver.Options.UseDapper ? GetAsDapper() : GetAsDriver(); string GetAsDapper() { @@ -44,18 +39,7 @@ string GetAsDapper() """; } - string GetAsLatest() - { - return $$""" - await using {{establishConnection}}; - {{connectionOpen.AppendSemicolonUnlessEmpty()}} - await using {{createSqlCommand}}; - {{commandParameters.JoinByNewLine()}} - {{executeScalar}} - """; - } - - string GetAsLegacy() + string GetAsDriver() { return $$""" using ({{establishConnection}}) diff --git a/Drivers/Generators/ExecLastIdDeclareGen.cs b/Drivers/Generators/ExecLastIdDeclareGen.cs index 8869309b..619cd642 100644 --- a/Drivers/Generators/ExecLastIdDeclareGen.cs +++ b/Drivers/Generators/ExecLastIdDeclareGen.cs @@ -31,35 +31,16 @@ private string GetMethodBody(string queryTextConstant, Query query) var createSqlCommand = dbDriver.CreateSqlCommand(queryTextConstant); var commandParameters = CommonGen.GetCommandParameters(query.Params).JoinByNewLine(); var returnLastId = ((IExecLastId)dbDriver).GetLastIdStatement().JoinByNewLine(); - - if (dbDriver.Options.DotnetFramework.LatestDotnetSupported()) - return GetAsLatest(); - return GetAsLegacy(); - - string GetAsLatest() - { - return $""" - await using {establishConnection}; - {connectionOpen} - await using {createSqlCommand}; - {commandParameters} - {returnLastId} - """; - } - - string GetAsLegacy() - { - return $$""" - using ({{establishConnection}}) + return $$""" + using ({{establishConnection}}) + { + {{connectionOpen}} + using ({{createSqlCommand}}) { - {{connectionOpen}} - using ({{createSqlCommand}}) - { - {{commandParameters}} - {{returnLastId}} - } + {{commandParameters}} + {{returnLastId}} } - """; - } + } + """; } } \ No newline at end of file diff --git a/Drivers/Generators/ExecRowsDeclareGen.cs b/Drivers/Generators/ExecRowsDeclareGen.cs index f09c733f..0c3cc53e 100644 --- a/Drivers/Generators/ExecRowsDeclareGen.cs +++ b/Drivers/Generators/ExecRowsDeclareGen.cs @@ -28,12 +28,7 @@ private string GetMethodBody(string queryTextConstant, Query query) var createSqlCommand = dbDriver.CreateSqlCommand(queryTextConstant); var commandParameters = CommonGen.GetCommandParameters(query.Params); var executeScalarAndReturnCreated = ExecuteScalarAndReturnCreated(); - - if (dbDriver.Options.UseDapper) - return GetAsDapper(); - if (dbDriver.Options.DotnetFramework.LatestDotnetSupported()) - return GetAsLatest(); - return GetAsLegacy(); + return dbDriver.Options.UseDapper ? GetAsDapper() : GetAsDriver(); string GetAsDapper() { @@ -46,18 +41,7 @@ string GetAsDapper() """; } - string GetAsLatest() - { - return $""" - await using {establishConnection}; - {connectionOpen.AppendSemicolonUnlessEmpty()} - await using {createSqlCommand}; - {commandParameters.JoinByNewLine()} - {executeScalarAndReturnCreated.JoinByNewLine()} - """; - } - - string GetAsLegacy() + string GetAsDriver() { return $$""" using ({{establishConnection}}) diff --git a/Drivers/Generators/ManyDeclareGen.cs b/Drivers/Generators/ManyDeclareGen.cs index 2d088af2..f7104724 100644 --- a/Drivers/Generators/ManyDeclareGen.cs +++ b/Drivers/Generators/ManyDeclareGen.cs @@ -36,12 +36,7 @@ private string GetMethodBody(string queryTextConstant, string returnInterface, Q {{Variable.Result.AsVarName()}}.Add({{dataclassInit}}); } """; - - if (dbDriver.Options.UseDapper) - return GetAsDapper(); - if (dbDriver.Options.DotnetFramework.LatestDotnetSupported()) - return GetAsLatest(); - return GetAsLegacy(); + return dbDriver.Options.UseDapper ? GetAsDapper() : GetAsDriver(); string GetAsDapper() { @@ -56,21 +51,7 @@ string GetAsDapper() """; } - string GetAsLatest() - { - return $$""" - await using {{establishConnection}}; - {{connectionOpen.AppendSemicolonUnlessEmpty()}} - await using {{createSqlCommand}}; - {{commandParameters.JoinByNewLine()}} - {{initDataReader}}; - var {{Variable.Result.AsVarName()}} = new List<{{returnInterface}}>(); - {{readWhileExists}} - return {{Variable.Result.AsVarName()}}; - """; - } - - string GetAsLegacy() + string GetAsDriver() { return $$""" using ({{establishConnection}}) diff --git a/Drivers/Generators/OneDeclareGen.cs b/Drivers/Generators/OneDeclareGen.cs index f6ffbf23..eb5221f2 100644 --- a/Drivers/Generators/OneDeclareGen.cs +++ b/Drivers/Generators/OneDeclareGen.cs @@ -30,12 +30,7 @@ private string GetMethodBody(string queryTextConstant, string returnInterface, Q var initDataReader = CommonGen.InitDataReader(); var awaitReaderRow = CommonGen.AwaitReaderRow(); var returnDataclass = CommonGen.InstantiateDataclass(query.Columns, returnInterface); - - if (dbDriver.Options.UseDapper) - return GetAsDapper(); - if (dbDriver.Options.DotnetFramework.LatestDotnetSupported()) - return GetAsLatest(); - return GetAsLegacy(); + return dbDriver.Options.UseDapper ? GetAsDapper() : GetAsDriver(); string GetAsDapper() { @@ -50,23 +45,7 @@ string GetAsDapper() """; } - string GetAsLatest() - { - return $$""" - await using {{establishConnection}}; - {{connectionOpen.AppendSemicolonUnlessEmpty()}} - await using {{createSqlCommand}}; - {{commandParameters.JoinByNewLine()}} - {{initDataReader}}; - if ({{awaitReaderRow}}) - { - return {{returnDataclass}}; - } - return null; - """; - } - - string GetAsLegacy() + string GetAsDriver() { return $$""" using ({{establishConnection}}) diff --git a/examples/MySqlConnectorDapperExample/QuerySql.cs b/examples/MySqlConnectorDapperExample/QuerySql.cs index fa2f7805..6859a775 100644 --- a/examples/MySqlConnectorDapperExample/QuerySql.cs +++ b/examples/MySqlConnectorDapperExample/QuerySql.cs @@ -1,4 +1,6 @@ // auto-generated by sqlc - do not edit +// ReSharper disable UseAwaitUsing +// ReSharper disable ConvertToUsingDeclaration // ReSharper disable NotAccessedPositionalProperty.Global // ReSharper disable UnusedAutoPropertyAccessor.Global using System; @@ -70,13 +72,17 @@ public class CreateAuthorReturnIdArgs }; public async Task CreateAuthorReturnId(CreateAuthorReturnIdArgs args) { - await using var connection = new MySqlConnection(connectionString); - connection.Open(); - await using var command = new MySqlCommand(CreateAuthorReturnIdSql, connection); - command.Parameters.AddWithValue("@name", args.Name); - command.Parameters.AddWithValue("@bio", args.Bio!); - await command.ExecuteNonQueryAsync(); - return command.LastInsertedId; + using (var connection = new MySqlConnection(connectionString)) + { + connection.Open(); + using (var command = new MySqlCommand(CreateAuthorReturnIdSql, connection)) + { + command.Parameters.AddWithValue("@name", args.Name); + command.Parameters.AddWithValue("@bio", args.Bio!); + await command.ExecuteNonQueryAsync(); + return command.LastInsertedId; + } + } } private const string GetAuthorByIdSql = "SELECT id, name, bio, created FROM authors WHERE id = @id LIMIT 1"; diff --git a/examples/MySqlConnectorDapperLegacyExample/QuerySql.cs b/examples/MySqlConnectorDapperLegacyExample/QuerySql.cs index f182f80e..6e3c2143 100644 --- a/examples/MySqlConnectorDapperLegacyExample/QuerySql.cs +++ b/examples/MySqlConnectorDapperLegacyExample/QuerySql.cs @@ -1,4 +1,6 @@ // auto-generated by sqlc - do not edit +// ReSharper disable UseAwaitUsing +// ReSharper disable ConvertToUsingDeclaration // ReSharper disable NotAccessedPositionalProperty.Global // ReSharper disable UnusedAutoPropertyAccessor.Global namespace MySqlConnectorDapperLegacyExampleGen diff --git a/examples/MySqlConnectorExample/QuerySql.cs b/examples/MySqlConnectorExample/QuerySql.cs index 815f289b..5167e401 100644 --- a/examples/MySqlConnectorExample/QuerySql.cs +++ b/examples/MySqlConnectorExample/QuerySql.cs @@ -1,4 +1,6 @@ // auto-generated by sqlc - do not edit +// ReSharper disable UseAwaitUsing +// ReSharper disable ConvertToUsingDeclaration // ReSharper disable NotAccessedPositionalProperty.Global // ReSharper disable UnusedAutoPropertyAccessor.Global using System; @@ -14,20 +16,26 @@ public class QuerySql(string connectionString) public readonly record struct GetAuthorArgs(string Name); public async Task GetAuthor(GetAuthorArgs args) { - await using var connection = new MySqlConnection(connectionString); - connection.Open(); - await using var command = new MySqlCommand(GetAuthorSql, connection); - command.Parameters.AddWithValue("@name", args.Name); - var reader = await command.ExecuteReaderAsync(); - if (await reader.ReadAsync()) + using (var connection = new MySqlConnection(connectionString)) { - return new GetAuthorRow + connection.Open(); + using (var command = new MySqlCommand(GetAuthorSql, connection)) { - Id = reader.GetInt64(0), - Name = reader.GetString(1), - Bio = reader.IsDBNull(2) ? null : reader.GetString(2), - Created = reader.GetDateTime(3) - }; + command.Parameters.AddWithValue("@name", args.Name); + using (var reader = await command.ExecuteReaderAsync()) + { + if (await reader.ReadAsync()) + { + return new GetAuthorRow + { + Id = reader.GetInt64(0), + Name = reader.GetString(1), + Bio = reader.IsDBNull(2) ? null : reader.GetString(2), + Created = reader.GetDateTime(3) + }; + } + } + } } return null; @@ -37,42 +45,56 @@ public class QuerySql(string connectionString) public readonly record struct ListAuthorsRow(long Id, string Name, string? Bio, DateTime Created); public async Task> ListAuthors() { - await using var connection = new MySqlConnection(connectionString); - connection.Open(); - await using var command = new MySqlCommand(ListAuthorsSql, connection); - var reader = await command.ExecuteReaderAsync(); - var result = new List(); - while (await reader.ReadAsync()) + using (var connection = new MySqlConnection(connectionString)) { - result.Add(new ListAuthorsRow { Id = reader.GetInt64(0), Name = reader.GetString(1), Bio = reader.IsDBNull(2) ? null : reader.GetString(2), Created = reader.GetDateTime(3) }); - } + connection.Open(); + using (var command = new MySqlCommand(ListAuthorsSql, connection)) + { + using (var reader = await command.ExecuteReaderAsync()) + { + var result = new List(); + while (await reader.ReadAsync()) + { + result.Add(new ListAuthorsRow { Id = reader.GetInt64(0), Name = reader.GetString(1), Bio = reader.IsDBNull(2) ? null : reader.GetString(2), Created = reader.GetDateTime(3) }); + } - return result; + return result; + } + } + } } private const string CreateAuthorSql = "INSERT INTO authors (name, bio) VALUES (@name, @bio)"; public readonly record struct CreateAuthorArgs(string Name, string? Bio); public async Task CreateAuthor(CreateAuthorArgs args) { - await using var connection = new MySqlConnection(connectionString); - connection.Open(); - await using var command = new MySqlCommand(CreateAuthorSql, connection); - command.Parameters.AddWithValue("@name", args.Name); - command.Parameters.AddWithValue("@bio", args.Bio!); - await command.ExecuteScalarAsync(); + using (var connection = new MySqlConnection(connectionString)) + { + connection.Open(); + using (var command = new MySqlCommand(CreateAuthorSql, connection)) + { + command.Parameters.AddWithValue("@name", args.Name); + command.Parameters.AddWithValue("@bio", args.Bio!); + await command.ExecuteScalarAsync(); + } + } } private const string CreateAuthorReturnIdSql = "INSERT INTO authors (name, bio) VALUES (@name, @bio)"; public readonly record struct CreateAuthorReturnIdArgs(string Name, string? Bio); public async Task CreateAuthorReturnId(CreateAuthorReturnIdArgs args) { - await using var connection = new MySqlConnection(connectionString); - connection.Open(); - await using var command = new MySqlCommand(CreateAuthorReturnIdSql, connection); - command.Parameters.AddWithValue("@name", args.Name); - command.Parameters.AddWithValue("@bio", args.Bio!); - await command.ExecuteNonQueryAsync(); - return command.LastInsertedId; + using (var connection = new MySqlConnection(connectionString)) + { + connection.Open(); + using (var command = new MySqlCommand(CreateAuthorReturnIdSql, connection)) + { + command.Parameters.AddWithValue("@name", args.Name); + command.Parameters.AddWithValue("@bio", args.Bio!); + await command.ExecuteNonQueryAsync(); + return command.LastInsertedId; + } + } } private const string GetAuthorByIdSql = "SELECT id, name, bio, created FROM authors WHERE id = @id LIMIT 1"; @@ -80,20 +102,26 @@ public async Task CreateAuthorReturnId(CreateAuthorReturnIdArgs args) public readonly record struct GetAuthorByIdArgs(long Id); public async Task GetAuthorById(GetAuthorByIdArgs args) { - await using var connection = new MySqlConnection(connectionString); - connection.Open(); - await using var command = new MySqlCommand(GetAuthorByIdSql, connection); - command.Parameters.AddWithValue("@id", args.Id); - var reader = await command.ExecuteReaderAsync(); - if (await reader.ReadAsync()) + using (var connection = new MySqlConnection(connectionString)) { - return new GetAuthorByIdRow + connection.Open(); + using (var command = new MySqlCommand(GetAuthorByIdSql, connection)) { - Id = reader.GetInt64(0), - Name = reader.GetString(1), - Bio = reader.IsDBNull(2) ? null : reader.GetString(2), - Created = reader.GetDateTime(3) - }; + command.Parameters.AddWithValue("@id", args.Id); + using (var reader = await command.ExecuteReaderAsync()) + { + if (await reader.ReadAsync()) + { + return new GetAuthorByIdRow + { + Id = reader.GetInt64(0), + Name = reader.GetString(1), + Bio = reader.IsDBNull(2) ? null : reader.GetString(2), + Created = reader.GetDateTime(3) + }; + } + } + } } return null; @@ -103,83 +131,101 @@ public async Task CreateAuthorReturnId(CreateAuthorReturnIdArgs args) public readonly record struct DeleteAuthorArgs(string Name); public async Task DeleteAuthor(DeleteAuthorArgs args) { - await using var connection = new MySqlConnection(connectionString); - connection.Open(); - await using var command = new MySqlCommand(DeleteAuthorSql, connection); - command.Parameters.AddWithValue("@name", args.Name); - await command.ExecuteScalarAsync(); + using (var connection = new MySqlConnection(connectionString)) + { + connection.Open(); + using (var command = new MySqlCommand(DeleteAuthorSql, connection)) + { + command.Parameters.AddWithValue("@name", args.Name); + await command.ExecuteScalarAsync(); + } + } } private const string TruncateAuthorsSql = "TRUNCATE TABLE authors"; public async Task TruncateAuthors() { - await using var connection = new MySqlConnection(connectionString); - connection.Open(); - await using var command = new MySqlCommand(TruncateAuthorsSql, connection); - await command.ExecuteScalarAsync(); + using (var connection = new MySqlConnection(connectionString)) + { + connection.Open(); + using (var command = new MySqlCommand(TruncateAuthorsSql, connection)) + { + await command.ExecuteScalarAsync(); + } + } } private const string UpdateAuthorsSql = "UPDATE authors SET bio = @bio WHERE bio IS NOT NULL "; public readonly record struct UpdateAuthorsArgs(string? Bio); public async Task UpdateAuthors(UpdateAuthorsArgs args) { - await using var connection = new MySqlConnection(connectionString); - connection.Open(); - await using var command = new MySqlCommand(UpdateAuthorsSql, connection); - command.Parameters.AddWithValue("@bio", args.Bio!); - return await command.ExecuteNonQueryAsync(); + using (var connection = new MySqlConnection(connectionString)) + { + connection.Open(); + using (var command = new MySqlCommand(UpdateAuthorsSql, connection)) + { + command.Parameters.AddWithValue("@bio", args.Bio!); + return await command.ExecuteNonQueryAsync(); + } + } } private const string TestSql = "SELECT c_bit, c_tinyint, c_bool, c_boolean, c_smallint, c_mediumint, c_int, c_integer, c_bigint, c_serial, c_decimal, c_dec, c_numeric, c_fixed, c_float, c_double, c_double_precision, c_date, c_time, c_datetime, c_timestamp, c_year, c_char, c_nchar, c_national_char, c_varchar, c_binary, c_varbinary, c_tinyblob, c_tinytext, c_blob, c_text, c_mediumblob, c_mediumtext, c_longblob, c_longtext, c_json FROM node_mysql_types LIMIT 1"; public readonly record struct TestRow(byte[]? CBit, int? CTinyint, int? CBool, int? CBoolean, int? CSmallint, int? CMediumint, int? CInt, int? CInteger, long? CBigint, long CSerial, string? CDecimal, string? CDec, string? CNumeric, string? CFixed, double? CFloat, double? CDouble, double? CDoublePrecision, DateTime? CDate, string? CTime, DateTime? CDatetime, DateTime? CTimestamp, int? CYear, string? CChar, string? CNchar, string? CNationalChar, string? CVarchar, byte[]? CBinary, byte[]? CVarbinary, byte[]? CTinyblob, string? CTinytext, byte[]? CBlob, string? CText, byte[]? CMediumblob, string? CMediumtext, byte[]? CLongblob, string? CLongtext, object? CJson); public async Task Test() { - await using var connection = new MySqlConnection(connectionString); - connection.Open(); - await using var command = new MySqlCommand(TestSql, connection); - var reader = await command.ExecuteReaderAsync(); - if (await reader.ReadAsync()) + using (var connection = new MySqlConnection(connectionString)) { - return new TestRow + connection.Open(); + using (var command = new MySqlCommand(TestSql, connection)) { - CBit = reader.IsDBNull(0) ? null : Utils.GetBytes(reader, 0), - CTinyint = reader.IsDBNull(1) ? null : reader.GetInt32(1), - CBool = reader.IsDBNull(2) ? null : reader.GetInt32(2), - CBoolean = reader.IsDBNull(3) ? null : reader.GetInt32(3), - CSmallint = reader.IsDBNull(4) ? null : reader.GetInt32(4), - CMediumint = reader.IsDBNull(5) ? null : reader.GetInt32(5), - CInt = reader.IsDBNull(6) ? null : reader.GetInt32(6), - CInteger = reader.IsDBNull(7) ? null : reader.GetInt32(7), - CBigint = reader.IsDBNull(8) ? null : reader.GetInt64(8), - CSerial = reader.GetInt64(9), - CDecimal = reader.IsDBNull(10) ? null : reader.GetString(10), - CDec = reader.IsDBNull(11) ? null : reader.GetString(11), - CNumeric = reader.IsDBNull(12) ? null : reader.GetString(12), - CFixed = reader.IsDBNull(13) ? null : reader.GetString(13), - CFloat = reader.IsDBNull(14) ? null : reader.GetDouble(14), - CDouble = reader.IsDBNull(15) ? null : reader.GetDouble(15), - CDoublePrecision = reader.IsDBNull(16) ? null : reader.GetDouble(16), - CDate = reader.IsDBNull(17) ? null : reader.GetDateTime(17), - CTime = reader.IsDBNull(18) ? null : reader.GetString(18), - CDatetime = reader.IsDBNull(19) ? null : reader.GetDateTime(19), - CTimestamp = reader.IsDBNull(20) ? null : reader.GetDateTime(20), - CYear = reader.IsDBNull(21) ? null : reader.GetInt32(21), - CChar = reader.IsDBNull(22) ? null : reader.GetString(22), - CNchar = reader.IsDBNull(23) ? null : reader.GetString(23), - CNationalChar = reader.IsDBNull(24) ? null : reader.GetString(24), - CVarchar = reader.IsDBNull(25) ? null : reader.GetString(25), - CBinary = reader.IsDBNull(26) ? null : Utils.GetBytes(reader, 26), - CVarbinary = reader.IsDBNull(27) ? null : Utils.GetBytes(reader, 27), - CTinyblob = reader.IsDBNull(28) ? null : Utils.GetBytes(reader, 28), - CTinytext = reader.IsDBNull(29) ? null : reader.GetString(29), - CBlob = reader.IsDBNull(30) ? null : Utils.GetBytes(reader, 30), - CText = reader.IsDBNull(31) ? null : reader.GetString(31), - CMediumblob = reader.IsDBNull(32) ? null : Utils.GetBytes(reader, 32), - CMediumtext = reader.IsDBNull(33) ? null : reader.GetString(33), - CLongblob = reader.IsDBNull(34) ? null : Utils.GetBytes(reader, 34), - CLongtext = reader.IsDBNull(35) ? null : reader.GetString(35), - CJson = reader.IsDBNull(36) ? null : reader.GetString(36) - }; + using (var reader = await command.ExecuteReaderAsync()) + { + if (await reader.ReadAsync()) + { + return new TestRow + { + CBit = reader.IsDBNull(0) ? null : Utils.GetBytes(reader, 0), + CTinyint = reader.IsDBNull(1) ? null : reader.GetInt32(1), + CBool = reader.IsDBNull(2) ? null : reader.GetInt32(2), + CBoolean = reader.IsDBNull(3) ? null : reader.GetInt32(3), + CSmallint = reader.IsDBNull(4) ? null : reader.GetInt32(4), + CMediumint = reader.IsDBNull(5) ? null : reader.GetInt32(5), + CInt = reader.IsDBNull(6) ? null : reader.GetInt32(6), + CInteger = reader.IsDBNull(7) ? null : reader.GetInt32(7), + CBigint = reader.IsDBNull(8) ? null : reader.GetInt64(8), + CSerial = reader.GetInt64(9), + CDecimal = reader.IsDBNull(10) ? null : reader.GetString(10), + CDec = reader.IsDBNull(11) ? null : reader.GetString(11), + CNumeric = reader.IsDBNull(12) ? null : reader.GetString(12), + CFixed = reader.IsDBNull(13) ? null : reader.GetString(13), + CFloat = reader.IsDBNull(14) ? null : reader.GetDouble(14), + CDouble = reader.IsDBNull(15) ? null : reader.GetDouble(15), + CDoublePrecision = reader.IsDBNull(16) ? null : reader.GetDouble(16), + CDate = reader.IsDBNull(17) ? null : reader.GetDateTime(17), + CTime = reader.IsDBNull(18) ? null : reader.GetString(18), + CDatetime = reader.IsDBNull(19) ? null : reader.GetDateTime(19), + CTimestamp = reader.IsDBNull(20) ? null : reader.GetDateTime(20), + CYear = reader.IsDBNull(21) ? null : reader.GetInt32(21), + CChar = reader.IsDBNull(22) ? null : reader.GetString(22), + CNchar = reader.IsDBNull(23) ? null : reader.GetString(23), + CNationalChar = reader.IsDBNull(24) ? null : reader.GetString(24), + CVarchar = reader.IsDBNull(25) ? null : reader.GetString(25), + CBinary = reader.IsDBNull(26) ? null : Utils.GetBytes(reader, 26), + CVarbinary = reader.IsDBNull(27) ? null : Utils.GetBytes(reader, 27), + CTinyblob = reader.IsDBNull(28) ? null : Utils.GetBytes(reader, 28), + CTinytext = reader.IsDBNull(29) ? null : reader.GetString(29), + CBlob = reader.IsDBNull(30) ? null : Utils.GetBytes(reader, 30), + CText = reader.IsDBNull(31) ? null : reader.GetString(31), + CMediumblob = reader.IsDBNull(32) ? null : Utils.GetBytes(reader, 32), + CMediumtext = reader.IsDBNull(33) ? null : reader.GetString(33), + CLongblob = reader.IsDBNull(34) ? null : Utils.GetBytes(reader, 34), + CLongtext = reader.IsDBNull(35) ? null : reader.GetString(35), + CJson = reader.IsDBNull(36) ? null : reader.GetString(36) + }; + } + } + } } return null; diff --git a/examples/MySqlConnectorLegacyExample/QuerySql.cs b/examples/MySqlConnectorLegacyExample/QuerySql.cs index 67b7a49f..c4a298d9 100644 --- a/examples/MySqlConnectorLegacyExample/QuerySql.cs +++ b/examples/MySqlConnectorLegacyExample/QuerySql.cs @@ -1,4 +1,6 @@ // auto-generated by sqlc - do not edit +// ReSharper disable UseAwaitUsing +// ReSharper disable ConvertToUsingDeclaration // ReSharper disable NotAccessedPositionalProperty.Global // ReSharper disable UnusedAutoPropertyAccessor.Global namespace MySqlConnectorLegacyExampleGen diff --git a/examples/NpgsqlDapperExample/QuerySql.cs b/examples/NpgsqlDapperExample/QuerySql.cs index 6f8056e9..6e1a5dd7 100644 --- a/examples/NpgsqlDapperExample/QuerySql.cs +++ b/examples/NpgsqlDapperExample/QuerySql.cs @@ -1,4 +1,6 @@ // auto-generated by sqlc - do not edit +// ReSharper disable UseAwaitUsing +// ReSharper disable ConvertToUsingDeclaration // ReSharper disable NotAccessedPositionalProperty.Global // ReSharper disable UnusedAutoPropertyAccessor.Global using System; @@ -83,12 +85,16 @@ public class CreateAuthorReturnIdArgs }; public async Task CreateAuthorReturnId(CreateAuthorReturnIdArgs args) { - await using var connection = NpgsqlDataSource.Create(connectionString); - await using var command = connection.CreateCommand(CreateAuthorReturnIdSql); - command.Parameters.AddWithValue("@name", args.Name); - command.Parameters.AddWithValue("@bio", args.Bio!); - var result = await command.ExecuteScalarAsync(); - return (long)(result ?? -1); + using (var connection = NpgsqlDataSource.Create(connectionString)) + { + using (var command = connection.CreateCommand(CreateAuthorReturnIdSql)) + { + command.Parameters.AddWithValue("@name", args.Name); + command.Parameters.AddWithValue("@bio", args.Bio!); + var result = await command.ExecuteScalarAsync(); + return (long)(result ?? -1); + } + } } private const string GetAuthorByIdSql = "SELECT id, name, bio, created FROM authors WHERE id = @id LIMIT 1"; @@ -166,21 +172,26 @@ public class CopyToTestsArgs }; public async Task CopyToTests(List args) { - await using var ds = NpgsqlDataSource.Create(connectionString); - var connection = ds.CreateConnection(); - await connection.OpenAsync(); - await using var writer = await connection.BeginBinaryImportAsync(CopyToTestsSql); - foreach (var row in args) + using (var ds = NpgsqlDataSource.Create(connectionString)) { - await writer.StartRowAsync(); - await writer.WriteAsync(row.CInt, NpgsqlDbType.Integer); - await writer.WriteAsync(row.CVarchar, NpgsqlDbType.Varchar); - await writer.WriteAsync(row.CDate, NpgsqlDbType.Date); - await writer.WriteAsync(row.CTimestamp, NpgsqlDbType.Timestamp); - } + var connection = ds.CreateConnection(); + await connection.OpenAsync(); + using (var writer = await connection.BeginBinaryImportAsync(CopyToTestsSql)) + { + foreach (var row in args) + { + await writer.StartRowAsync(); + await writer.WriteAsync(row.CInt, NpgsqlDbType.Integer); + await writer.WriteAsync(row.CVarchar, NpgsqlDbType.Varchar); + await writer.WriteAsync(row.CDate, NpgsqlDbType.Date); + await writer.WriteAsync(row.CTimestamp, NpgsqlDbType.Timestamp); + } - await writer.CompleteAsync(); - await connection.CloseAsync(); + await writer.CompleteAsync(); + } + + await connection.CloseAsync(); + } } private const string CountCopyRowsSql = "SELECT COUNT(1) AS cnt FROM copy_tests"; diff --git a/examples/NpgsqlDapperLegacyExample/QuerySql.cs b/examples/NpgsqlDapperLegacyExample/QuerySql.cs index 99747c0c..72c3b0de 100644 --- a/examples/NpgsqlDapperLegacyExample/QuerySql.cs +++ b/examples/NpgsqlDapperLegacyExample/QuerySql.cs @@ -1,4 +1,6 @@ // auto-generated by sqlc - do not edit +// ReSharper disable UseAwaitUsing +// ReSharper disable ConvertToUsingDeclaration // ReSharper disable NotAccessedPositionalProperty.Global // ReSharper disable UnusedAutoPropertyAccessor.Global namespace NpgsqlDapperLegacyExampleGen diff --git a/examples/NpgsqlExample/QuerySql.cs b/examples/NpgsqlExample/QuerySql.cs index 756aafbb..cfb7f138 100644 --- a/examples/NpgsqlExample/QuerySql.cs +++ b/examples/NpgsqlExample/QuerySql.cs @@ -1,4 +1,6 @@ // auto-generated by sqlc - do not edit +// ReSharper disable UseAwaitUsing +// ReSharper disable ConvertToUsingDeclaration // ReSharper disable NotAccessedPositionalProperty.Global // ReSharper disable UnusedAutoPropertyAccessor.Global using System; @@ -15,19 +17,25 @@ public class QuerySql(string connectionString) public readonly record struct GetAuthorArgs(string Name); public async Task GetAuthor(GetAuthorArgs args) { - await using var connection = NpgsqlDataSource.Create(connectionString); - await using var command = connection.CreateCommand(GetAuthorSql); - command.Parameters.AddWithValue("@name", args.Name); - var reader = await command.ExecuteReaderAsync(); - if (await reader.ReadAsync()) + using (var connection = NpgsqlDataSource.Create(connectionString)) { - return new GetAuthorRow + using (var command = connection.CreateCommand(GetAuthorSql)) { - Id = reader.GetInt64(0), - Name = reader.GetString(1), - Bio = reader.IsDBNull(2) ? null : reader.GetString(2), - Created = reader.GetDateTime(3) - }; + command.Parameters.AddWithValue("@name", args.Name); + using (var reader = await command.ExecuteReaderAsync()) + { + if (await reader.ReadAsync()) + { + return new GetAuthorRow + { + Id = reader.GetInt64(0), + Name = reader.GetString(1), + Bio = reader.IsDBNull(2) ? null : reader.GetString(2), + Created = reader.GetDateTime(3) + }; + } + } + } } return null; @@ -37,16 +45,22 @@ public class QuerySql(string connectionString) public readonly record struct ListAuthorsRow(long Id, string Name, string? Bio, DateTime Created); public async Task> ListAuthors() { - await using var connection = NpgsqlDataSource.Create(connectionString); - await using var command = connection.CreateCommand(ListAuthorsSql); - var reader = await command.ExecuteReaderAsync(); - var result = new List(); - while (await reader.ReadAsync()) + using (var connection = NpgsqlDataSource.Create(connectionString)) { - result.Add(new ListAuthorsRow { Id = reader.GetInt64(0), Name = reader.GetString(1), Bio = reader.IsDBNull(2) ? null : reader.GetString(2), Created = reader.GetDateTime(3) }); - } + using (var command = connection.CreateCommand(ListAuthorsSql)) + { + using (var reader = await command.ExecuteReaderAsync()) + { + var result = new List(); + while (await reader.ReadAsync()) + { + result.Add(new ListAuthorsRow { Id = reader.GetInt64(0), Name = reader.GetString(1), Bio = reader.IsDBNull(2) ? null : reader.GetString(2), Created = reader.GetDateTime(3) }); + } - return result; + return result; + } + } + } } private const string CreateAuthorSql = "INSERT INTO authors (name, bio) VALUES (@name, @bio) RETURNING id, name, bio, created"; @@ -54,20 +68,26 @@ public async Task> ListAuthors() public readonly record struct CreateAuthorArgs(string Name, string? Bio); public async Task CreateAuthor(CreateAuthorArgs args) { - await using var connection = NpgsqlDataSource.Create(connectionString); - await using var command = connection.CreateCommand(CreateAuthorSql); - command.Parameters.AddWithValue("@name", args.Name); - command.Parameters.AddWithValue("@bio", args.Bio!); - var reader = await command.ExecuteReaderAsync(); - if (await reader.ReadAsync()) + using (var connection = NpgsqlDataSource.Create(connectionString)) { - return new CreateAuthorRow + using (var command = connection.CreateCommand(CreateAuthorSql)) { - Id = reader.GetInt64(0), - Name = reader.GetString(1), - Bio = reader.IsDBNull(2) ? null : reader.GetString(2), - Created = reader.GetDateTime(3) - }; + command.Parameters.AddWithValue("@name", args.Name); + command.Parameters.AddWithValue("@bio", args.Bio!); + using (var reader = await command.ExecuteReaderAsync()) + { + if (await reader.ReadAsync()) + { + return new CreateAuthorRow + { + Id = reader.GetInt64(0), + Name = reader.GetString(1), + Bio = reader.IsDBNull(2) ? null : reader.GetString(2), + Created = reader.GetDateTime(3) + }; + } + } + } } return null; @@ -78,12 +98,16 @@ public async Task> ListAuthors() public readonly record struct CreateAuthorReturnIdArgs(string Name, string? Bio); public async Task CreateAuthorReturnId(CreateAuthorReturnIdArgs args) { - await using var connection = NpgsqlDataSource.Create(connectionString); - await using var command = connection.CreateCommand(CreateAuthorReturnIdSql); - command.Parameters.AddWithValue("@name", args.Name); - command.Parameters.AddWithValue("@bio", args.Bio!); - var result = await command.ExecuteScalarAsync(); - return (long)(result ?? -1); + using (var connection = NpgsqlDataSource.Create(connectionString)) + { + using (var command = connection.CreateCommand(CreateAuthorReturnIdSql)) + { + command.Parameters.AddWithValue("@name", args.Name); + command.Parameters.AddWithValue("@bio", args.Bio!); + var result = await command.ExecuteScalarAsync(); + return (long)(result ?? -1); + } + } } private const string GetAuthorByIdSql = "SELECT id, name, bio, created FROM authors WHERE id = @id LIMIT 1"; @@ -91,19 +115,25 @@ public async Task CreateAuthorReturnId(CreateAuthorReturnIdArgs args) public readonly record struct GetAuthorByIdArgs(long Id); public async Task GetAuthorById(GetAuthorByIdArgs args) { - await using var connection = NpgsqlDataSource.Create(connectionString); - await using var command = connection.CreateCommand(GetAuthorByIdSql); - command.Parameters.AddWithValue("@id", args.Id); - var reader = await command.ExecuteReaderAsync(); - if (await reader.ReadAsync()) + using (var connection = NpgsqlDataSource.Create(connectionString)) { - return new GetAuthorByIdRow + using (var command = connection.CreateCommand(GetAuthorByIdSql)) { - Id = reader.GetInt64(0), - Name = reader.GetString(1), - Bio = reader.IsDBNull(2) ? null : reader.GetString(2), - Created = reader.GetDateTime(3) - }; + command.Parameters.AddWithValue("@id", args.Id); + using (var reader = await command.ExecuteReaderAsync()) + { + if (await reader.ReadAsync()) + { + return new GetAuthorByIdRow + { + Id = reader.GetInt64(0), + Name = reader.GetString(1), + Bio = reader.IsDBNull(2) ? null : reader.GetString(2), + Created = reader.GetDateTime(3) + }; + } + } + } } return null; @@ -113,72 +143,99 @@ public async Task CreateAuthorReturnId(CreateAuthorReturnIdArgs args) public readonly record struct DeleteAuthorArgs(string Name); public async Task DeleteAuthor(DeleteAuthorArgs args) { - await using var connection = NpgsqlDataSource.Create(connectionString); - await using var command = connection.CreateCommand(DeleteAuthorSql); - command.Parameters.AddWithValue("@name", args.Name); - await command.ExecuteScalarAsync(); + using (var connection = NpgsqlDataSource.Create(connectionString)) + { + using (var command = connection.CreateCommand(DeleteAuthorSql)) + { + command.Parameters.AddWithValue("@name", args.Name); + await command.ExecuteScalarAsync(); + } + } } private const string TruncateAuthorsSql = "TRUNCATE TABLE authors"; public async Task TruncateAuthors() { - await using var connection = NpgsqlDataSource.Create(connectionString); - await using var command = connection.CreateCommand(TruncateAuthorsSql); - await command.ExecuteScalarAsync(); + using (var connection = NpgsqlDataSource.Create(connectionString)) + { + using (var command = connection.CreateCommand(TruncateAuthorsSql)) + { + await command.ExecuteScalarAsync(); + } + } } private const string UpdateAuthorsSql = "UPDATE authors SET bio = @bio WHERE bio IS NOT NULL "; public readonly record struct UpdateAuthorsArgs(string? Bio); public async Task UpdateAuthors(UpdateAuthorsArgs args) { - await using var connection = NpgsqlDataSource.Create(connectionString); - await using var command = connection.CreateCommand(UpdateAuthorsSql); - command.Parameters.AddWithValue("@bio", args.Bio!); - return await command.ExecuteNonQueryAsync(); + using (var connection = NpgsqlDataSource.Create(connectionString)) + { + using (var command = connection.CreateCommand(UpdateAuthorsSql)) + { + command.Parameters.AddWithValue("@bio", args.Bio!); + return await command.ExecuteNonQueryAsync(); + } + } } private const string TruncateCopyToTestsSql = "TRUNCATE TABLE copy_tests"; public async Task TruncateCopyToTests() { - await using var connection = NpgsqlDataSource.Create(connectionString); - await using var command = connection.CreateCommand(TruncateCopyToTestsSql); - await command.ExecuteScalarAsync(); + using (var connection = NpgsqlDataSource.Create(connectionString)) + { + using (var command = connection.CreateCommand(TruncateCopyToTestsSql)) + { + await command.ExecuteScalarAsync(); + } + } } private const string CopyToTestsSql = "COPY copy_tests (c_int, c_varchar, c_date, c_timestamp) FROM STDIN (FORMAT BINARY)"; public readonly record struct CopyToTestsArgs(int CInt, string CVarchar, DateTime CDate, DateTime CTimestamp); public async Task CopyToTests(List args) { - await using var ds = NpgsqlDataSource.Create(connectionString); - var connection = ds.CreateConnection(); - await connection.OpenAsync(); - await using var writer = await connection.BeginBinaryImportAsync(CopyToTestsSql); - foreach (var row in args) + using (var ds = NpgsqlDataSource.Create(connectionString)) { - await writer.StartRowAsync(); - await writer.WriteAsync(row.CInt, NpgsqlDbType.Integer); - await writer.WriteAsync(row.CVarchar, NpgsqlDbType.Varchar); - await writer.WriteAsync(row.CDate, NpgsqlDbType.Date); - await writer.WriteAsync(row.CTimestamp, NpgsqlDbType.Timestamp); - } + var connection = ds.CreateConnection(); + await connection.OpenAsync(); + using (var writer = await connection.BeginBinaryImportAsync(CopyToTestsSql)) + { + foreach (var row in args) + { + await writer.StartRowAsync(); + await writer.WriteAsync(row.CInt, NpgsqlDbType.Integer); + await writer.WriteAsync(row.CVarchar, NpgsqlDbType.Varchar); + await writer.WriteAsync(row.CDate, NpgsqlDbType.Date); + await writer.WriteAsync(row.CTimestamp, NpgsqlDbType.Timestamp); + } - await writer.CompleteAsync(); - await connection.CloseAsync(); + await writer.CompleteAsync(); + } + + await connection.CloseAsync(); + } } private const string CountCopyRowsSql = "SELECT COUNT(1) AS cnt FROM copy_tests"; public readonly record struct CountCopyRowsRow(long Cnt); public async Task CountCopyRows() { - await using var connection = NpgsqlDataSource.Create(connectionString); - await using var command = connection.CreateCommand(CountCopyRowsSql); - var reader = await command.ExecuteReaderAsync(); - if (await reader.ReadAsync()) + using (var connection = NpgsqlDataSource.Create(connectionString)) { - return new CountCopyRowsRow + using (var command = connection.CreateCommand(CountCopyRowsSql)) { - Cnt = reader.GetInt64(0) - }; + using (var reader = await command.ExecuteReaderAsync()) + { + if (await reader.ReadAsync()) + { + return new CountCopyRowsRow + { + Cnt = reader.GetInt64(0) + }; + } + } + } } return null; @@ -188,33 +245,39 @@ public async Task CopyToTests(List args) public readonly record struct TestRow(byte[]? CBit, int? CSmallint, bool? CBoolean, int? CInteger, long? CBigint, int? CSerial, float? CDecimal, float? CNumeric, float? CReal, float? CDoublePrecision, DateTime? CDate, string? CTime, DateTime? CTimestamp, string? CChar, string? CVarchar, string? CCharacterVarying, byte[]? CBytea, string? CText, object? CJson); public async Task Test() { - await using var connection = NpgsqlDataSource.Create(connectionString); - await using var command = connection.CreateCommand(TestSql); - var reader = await command.ExecuteReaderAsync(); - if (await reader.ReadAsync()) + using (var connection = NpgsqlDataSource.Create(connectionString)) { - return new TestRow + using (var command = connection.CreateCommand(TestSql)) { - CBit = reader.IsDBNull(0) ? null : Utils.GetBytes(reader, 0), - CSmallint = reader.IsDBNull(1) ? null : reader.GetInt32(1), - CBoolean = reader.IsDBNull(2) ? null : reader.GetBoolean(2), - CInteger = reader.IsDBNull(3) ? null : reader.GetInt32(3), - CBigint = reader.IsDBNull(4) ? null : reader.GetInt64(4), - CSerial = reader.IsDBNull(5) ? null : reader.GetInt32(5), - CDecimal = reader.IsDBNull(6) ? null : reader.GetFloat(6), - CNumeric = reader.IsDBNull(7) ? null : reader.GetFloat(7), - CReal = reader.IsDBNull(8) ? null : reader.GetFloat(8), - CDoublePrecision = reader.IsDBNull(9) ? null : reader.GetFloat(9), - CDate = reader.IsDBNull(10) ? null : reader.GetDateTime(10), - CTime = reader.IsDBNull(11) ? null : reader.GetString(11), - CTimestamp = reader.IsDBNull(12) ? null : reader.GetDateTime(12), - CChar = reader.IsDBNull(13) ? null : reader.GetString(13), - CVarchar = reader.IsDBNull(14) ? null : reader.GetString(14), - CCharacterVarying = reader.IsDBNull(15) ? null : reader.GetString(15), - CBytea = reader.IsDBNull(16) ? null : Utils.GetBytes(reader, 16), - CText = reader.IsDBNull(17) ? null : reader.GetString(17), - CJson = reader.IsDBNull(18) ? null : reader.GetString(18) - }; + using (var reader = await command.ExecuteReaderAsync()) + { + if (await reader.ReadAsync()) + { + return new TestRow + { + CBit = reader.IsDBNull(0) ? null : Utils.GetBytes(reader, 0), + CSmallint = reader.IsDBNull(1) ? null : reader.GetInt32(1), + CBoolean = reader.IsDBNull(2) ? null : reader.GetBoolean(2), + CInteger = reader.IsDBNull(3) ? null : reader.GetInt32(3), + CBigint = reader.IsDBNull(4) ? null : reader.GetInt64(4), + CSerial = reader.IsDBNull(5) ? null : reader.GetInt32(5), + CDecimal = reader.IsDBNull(6) ? null : reader.GetFloat(6), + CNumeric = reader.IsDBNull(7) ? null : reader.GetFloat(7), + CReal = reader.IsDBNull(8) ? null : reader.GetFloat(8), + CDoublePrecision = reader.IsDBNull(9) ? null : reader.GetFloat(9), + CDate = reader.IsDBNull(10) ? null : reader.GetDateTime(10), + CTime = reader.IsDBNull(11) ? null : reader.GetString(11), + CTimestamp = reader.IsDBNull(12) ? null : reader.GetDateTime(12), + CChar = reader.IsDBNull(13) ? null : reader.GetString(13), + CVarchar = reader.IsDBNull(14) ? null : reader.GetString(14), + CCharacterVarying = reader.IsDBNull(15) ? null : reader.GetString(15), + CBytea = reader.IsDBNull(16) ? null : Utils.GetBytes(reader, 16), + CText = reader.IsDBNull(17) ? null : reader.GetString(17), + CJson = reader.IsDBNull(18) ? null : reader.GetString(18) + }; + } + } + } } return null; diff --git a/examples/NpgsqlLegacyExample/QuerySql.cs b/examples/NpgsqlLegacyExample/QuerySql.cs index 7ecff45e..4536ce3b 100644 --- a/examples/NpgsqlLegacyExample/QuerySql.cs +++ b/examples/NpgsqlLegacyExample/QuerySql.cs @@ -1,4 +1,6 @@ // auto-generated by sqlc - do not edit +// ReSharper disable UseAwaitUsing +// ReSharper disable ConvertToUsingDeclaration // ReSharper disable NotAccessedPositionalProperty.Global // ReSharper disable UnusedAutoPropertyAccessor.Global namespace NpgsqlLegacyExampleGen diff --git a/examples/SqliteDapperExample/QuerySql.cs b/examples/SqliteDapperExample/QuerySql.cs index a853d850..ded32f92 100644 --- a/examples/SqliteDapperExample/QuerySql.cs +++ b/examples/SqliteDapperExample/QuerySql.cs @@ -1,4 +1,6 @@ // auto-generated by sqlc - do not edit +// ReSharper disable UseAwaitUsing +// ReSharper disable ConvertToUsingDeclaration // ReSharper disable NotAccessedPositionalProperty.Global // ReSharper disable UnusedAutoPropertyAccessor.Global using System; diff --git a/examples/SqliteDapperLegacyExample/QuerySql.cs b/examples/SqliteDapperLegacyExample/QuerySql.cs index bc3cd3d2..bac96c3f 100644 --- a/examples/SqliteDapperLegacyExample/QuerySql.cs +++ b/examples/SqliteDapperLegacyExample/QuerySql.cs @@ -1,4 +1,6 @@ // auto-generated by sqlc - do not edit +// ReSharper disable UseAwaitUsing +// ReSharper disable ConvertToUsingDeclaration // ReSharper disable NotAccessedPositionalProperty.Global // ReSharper disable UnusedAutoPropertyAccessor.Global namespace SqliteDapperLegacyExampleGen diff --git a/examples/SqliteExample/QuerySql.cs b/examples/SqliteExample/QuerySql.cs index b093cf48..a8063911 100644 --- a/examples/SqliteExample/QuerySql.cs +++ b/examples/SqliteExample/QuerySql.cs @@ -1,4 +1,6 @@ // auto-generated by sqlc - do not edit +// ReSharper disable UseAwaitUsing +// ReSharper disable ConvertToUsingDeclaration // ReSharper disable NotAccessedPositionalProperty.Global // ReSharper disable UnusedAutoPropertyAccessor.Global using System; @@ -14,19 +16,25 @@ public class QuerySql(string connectionString) public readonly record struct GetAuthorArgs(string Name); public async Task GetAuthor(GetAuthorArgs args) { - await using var connection = new SqliteConnection(connectionString); - connection.Open(); - await using var command = new SqliteCommand(GetAuthorSql, connection); - command.Parameters.AddWithValue("@name", args.Name); - var reader = await command.ExecuteReaderAsync(); - if (await reader.ReadAsync()) + using (var connection = new SqliteConnection(connectionString)) { - return new GetAuthorRow + connection.Open(); + using (var command = new SqliteCommand(GetAuthorSql, connection)) { - Id = reader.GetInt32(0), - Name = reader.GetString(1), - Bio = reader.IsDBNull(2) ? null : reader.GetString(2) - }; + command.Parameters.AddWithValue("@name", args.Name); + using (var reader = await command.ExecuteReaderAsync()) + { + if (await reader.ReadAsync()) + { + return new GetAuthorRow + { + Id = reader.GetInt32(0), + Name = reader.GetString(1), + Bio = reader.IsDBNull(2) ? null : reader.GetString(2) + }; + } + } + } } return null; @@ -36,59 +44,81 @@ public class QuerySql(string connectionString) public readonly record struct ListAuthorsRow(int Id, string Name, string? Bio); public async Task> ListAuthors() { - await using var connection = new SqliteConnection(connectionString); - connection.Open(); - await using var command = new SqliteCommand(ListAuthorsSql, connection); - var reader = await command.ExecuteReaderAsync(); - var result = new List(); - while (await reader.ReadAsync()) + using (var connection = new SqliteConnection(connectionString)) { - result.Add(new ListAuthorsRow { Id = reader.GetInt32(0), Name = reader.GetString(1), Bio = reader.IsDBNull(2) ? null : reader.GetString(2) }); - } + connection.Open(); + using (var command = new SqliteCommand(ListAuthorsSql, connection)) + { + using (var reader = await command.ExecuteReaderAsync()) + { + var result = new List(); + while (await reader.ReadAsync()) + { + result.Add(new ListAuthorsRow { Id = reader.GetInt32(0), Name = reader.GetString(1), Bio = reader.IsDBNull(2) ? null : reader.GetString(2) }); + } - return result; + return result; + } + } + } } private const string CreateAuthorSql = "INSERT INTO authors (name, bio) VALUES (@name, @bio)"; public readonly record struct CreateAuthorArgs(string Name, string? Bio); public async Task CreateAuthor(CreateAuthorArgs args) { - await using var connection = new SqliteConnection(connectionString); - connection.Open(); - await using var command = new SqliteCommand(CreateAuthorSql, connection); - command.Parameters.AddWithValue("@name", args.Name); - command.Parameters.AddWithValue("@bio", args.Bio!); - await command.ExecuteScalarAsync(); + using (var connection = new SqliteConnection(connectionString)) + { + connection.Open(); + using (var command = new SqliteCommand(CreateAuthorSql, connection)) + { + command.Parameters.AddWithValue("@name", args.Name); + command.Parameters.AddWithValue("@bio", args.Bio!); + await command.ExecuteScalarAsync(); + } + } } private const string UpdateAuthorsSql = "UPDATE authors SET bio = @bio WHERE bio IS NOT NULL "; public readonly record struct UpdateAuthorsArgs(string? Bio); public async Task UpdateAuthors(UpdateAuthorsArgs args) { - await using var connection = new SqliteConnection(connectionString); - connection.Open(); - await using var command = new SqliteCommand(UpdateAuthorsSql, connection); - command.Parameters.AddWithValue("@bio", args.Bio!); - return await command.ExecuteNonQueryAsync(); + using (var connection = new SqliteConnection(connectionString)) + { + connection.Open(); + using (var command = new SqliteCommand(UpdateAuthorsSql, connection)) + { + command.Parameters.AddWithValue("@bio", args.Bio!); + return await command.ExecuteNonQueryAsync(); + } + } } private const string DeleteAuthorSql = "DELETE FROM authors WHERE name = @name"; public readonly record struct DeleteAuthorArgs(string Name); public async Task DeleteAuthor(DeleteAuthorArgs args) { - await using var connection = new SqliteConnection(connectionString); - connection.Open(); - await using var command = new SqliteCommand(DeleteAuthorSql, connection); - command.Parameters.AddWithValue("@name", args.Name); - await command.ExecuteScalarAsync(); + using (var connection = new SqliteConnection(connectionString)) + { + connection.Open(); + using (var command = new SqliteCommand(DeleteAuthorSql, connection)) + { + command.Parameters.AddWithValue("@name", args.Name); + await command.ExecuteScalarAsync(); + } + } } private const string DeleteAllAuthorsSql = "DELETE FROM authors"; public async Task DeleteAllAuthors() { - await using var connection = new SqliteConnection(connectionString); - connection.Open(); - await using var command = new SqliteCommand(DeleteAllAuthorsSql, connection); - await command.ExecuteScalarAsync(); + using (var connection = new SqliteConnection(connectionString)) + { + connection.Open(); + using (var command = new SqliteCommand(DeleteAllAuthorsSql, connection)) + { + await command.ExecuteScalarAsync(); + } + } } } \ No newline at end of file diff --git a/examples/SqliteLegacyExample/QuerySql.cs b/examples/SqliteLegacyExample/QuerySql.cs index 53be911d..6c38341e 100644 --- a/examples/SqliteLegacyExample/QuerySql.cs +++ b/examples/SqliteLegacyExample/QuerySql.cs @@ -1,4 +1,6 @@ // auto-generated by sqlc - do not edit +// ReSharper disable UseAwaitUsing +// ReSharper disable ConvertToUsingDeclaration // ReSharper disable NotAccessedPositionalProperty.Global // ReSharper disable UnusedAutoPropertyAccessor.Global namespace SqliteLegacyExampleGen