1- // auto-generated by sqlc - do not edit
2- // ReSharper disable UseObjectOrCollectionInitializer
3- // ReSharper disable UseAwaitUsing
4- // ReSharper disable ConvertToUsingDeclaration
5- // ReSharper disable NotAccessedPositionalProperty.Global
6- // ReSharper disable UnusedAutoPropertyAccessor.Global
1+ // auto-generated by sqlc - do not edit
2+ // ReSharper disable UseObjectOrCollectionInitializer
3+ // ReSharper disable UseAwaitUsing
4+ // ReSharper disable ConvertToUsingDeclaration
5+ // ReSharper disable NotAccessedPositionalProperty.Global
6+ // ReSharper disable UnusedAutoPropertyAccessor.Global
77using System ;
88using System . Collections . Generic ;
99using System . Threading . Tasks ;
1919namespace MySqlConnectorDapperExampleGen ;
2020public class QuerySql
2121{
22- public QuerySql ( string connectionString )
22+ public QuerySql ( )
2323 {
24- this . ConnectionString = connectionString ;
2524 Dapper . DefaultTypeMap . MatchNamesWithUnderscores = true ;
2625 }
2726
28- private string ConnectionString { get ; }
27+ public QuerySql ( string connectionString ) : this ( )
28+ {
29+ this . ConnectionString = connectionString ;
30+ }
31+
32+ public QuerySql ( MySqlTransaction transaction ) : this ( )
33+ {
34+ this . mySqlTransaction = transaction ;
35+ }
36+
37+ private MySqlTransaction ? mySqlTransaction { get ; }
38+
39+ private string ? ConnectionString { get ; }
2940
3041 private const string GetAuthorSql = "SELECT id, name, bio FROM authors WHERE name = @name LIMIT 1; SELECT LAST_INSERT_ID()" ;
3142 public class GetAuthorRow
@@ -40,13 +51,26 @@ public class GetAuthorArgs
4051 } ;
4152 public async Task < GetAuthorRow ? > GetAuthor ( GetAuthorArgs args )
4253 {
43- using ( var connection = new MySqlConnection ( ConnectionString ) )
54+ var queryParams = new Dictionary < string , object ? > ( ) ;
55+ queryParams . Add ( "name" , args . Name ) ;
56+ if ( this . mySqlTransaction == null )
4457 {
45- var queryParams = new Dictionary < string , object ? > ( ) ;
46- queryParams . Add ( "name" , args . Name ) ;
47- var result = await connection . QueryFirstOrDefaultAsync < GetAuthorRow ? > ( GetAuthorSql , queryParams ) ;
48- return result ;
58+ using ( var connection = new MySqlConnection ( ConnectionString ) )
59+ {
60+ var result = await connection . QueryFirstOrDefaultAsync < GetAuthorRow ? > ( GetAuthorSql , queryParams ) ;
61+ return result ;
62+ }
63+ }
64+
65+ if ( this . mySqlTransaction ? . Connection == null || this . mySqlTransaction ? . Connection . State != System . Data . ConnectionState . Open ) {
66+ throw new InvalidOperationException ( "Transaction is provided, but its connection is null." ) ;
4967 }
68+
69+ return await mySqlTransaction . Connection . QueryFirstOrDefaultAsync < GetAuthorRow ? > (
70+ GetAuthorSql ,
71+ queryParams ,
72+ transaction : this . mySqlTransaction ) ;
73+
5074 }
5175
5276 private const string ListAuthorsSql = "SELECT id, name, bio FROM authors ORDER BY name; SELECT LAST_INSERT_ID()" ;
@@ -74,14 +98,27 @@ public class CreateAuthorArgs
7498 } ;
7599 public async Task CreateAuthor ( CreateAuthorArgs args )
76100 {
77- using ( var connection = new MySqlConnection ( ConnectionString ) )
101+ var queryParams = new Dictionary < string , object ? > ( ) ;
102+ queryParams . Add ( "id" , args . Id ) ;
103+ queryParams . Add ( "name" , args . Name ) ;
104+ queryParams . Add ( "bio" , args . Bio ) ;
105+ if ( this . mySqlTransaction == null )
78106 {
79- var queryParams = new Dictionary < string , object ? > ( ) ;
80- queryParams . Add ( "id" , args . Id ) ;
81- queryParams . Add ( "name" , args . Name ) ;
82- queryParams . Add ( "bio" , args . Bio ) ;
83- await connection . ExecuteAsync ( CreateAuthorSql , queryParams ) ;
107+ using ( var connection = new MySqlConnection ( ConnectionString ) )
108+ {
109+ await connection . ExecuteAsync ( CreateAuthorSql , queryParams ) ;
110+ }
111+ }
112+
113+ if ( this . mySqlTransaction ? . Connection == null || this . mySqlTransaction ? . Connection . State != System . Data . ConnectionState . Open )
114+ {
115+ throw new InvalidOperationException ( "Transaction is provided, but its connection is null." ) ;
84116 }
117+
118+ await mySqlTransaction . Connection . ExecuteAsync (
119+ CreateAuthorSql ,
120+ queryParams ,
121+ transaction : this . mySqlTransaction ) ;
85122 }
86123
87124 private const string CreateAuthorReturnIdSql = "INSERT INTO authors (name, bio) VALUES (@name, @bio); SELECT LAST_INSERT_ID()" ;
0 commit comments