Skip to content

Commit 8ab0952

Browse files
droyadipinak
andauthored
Allow use of an existing SQL Connection (#31)
* allow to use an existing sql connection Updated SqlConnectionManager and SqlServerExtensions to allow an existing SqlConnection to be used for migrating * update approval tests * Updated approval due to test library change --------- Co-authored-by: Ioannis Pinakoulakis <giannis.pin@gmail.com>
1 parent 4140919 commit 8ab0952

3 files changed

Lines changed: 45 additions & 9 deletions

File tree

src/Tests/ApprovalFiles/NoPublicApiChanges.Run.approved.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
[assembly: System.CLSCompliant(false)]
1+
[assembly: System.CLSCompliant(false)]
22
[assembly: System.Reflection.AssemblyMetadata("RepositoryUrl", "https://github.com/DbUp/dbup-sqlserver.git")]
33
[assembly: System.Runtime.InteropServices.ComVisible(false)]
44
[assembly: System.Runtime.InteropServices.Guid("8190b40b-ac5b-414f-8a00-9b6a2c12b010")]
@@ -10,10 +10,12 @@ public static DbUp.Builder.UpgradeEngineBuilder AzureSqlDatabaseWithIntegratedSe
1010
public static class SqlServerExtensions
1111
{
1212
public static DbUp.Builder.UpgradeEngineBuilder JournalToSqlTable(this DbUp.Builder.UpgradeEngineBuilder builder, string schema, string table) { }
13+
public static DbUp.Builder.UpgradeEngineBuilder SqlDatabase(this DbUp.Builder.SupportedDatabases supported, Microsoft.Data.SqlClient.SqlConnection connection) { }
1314
public static DbUp.Builder.UpgradeEngineBuilder SqlDatabase(this DbUp.Builder.SupportedDatabases supported, string connectionString) { }
1415
public static void SqlDatabase(this DbUp.SupportedDatabasesForDropDatabase supported, string connectionString) { }
1516
public static bool SqlDatabase(this DbUp.SupportedDatabasesForEnsureDatabase supported, string connectionString) { }
1617
public static DbUp.Builder.UpgradeEngineBuilder SqlDatabase(this DbUp.Builder.SupportedDatabases supported, DbUp.Engine.Transactions.IConnectionManager connectionManager, string schema = null) { }
18+
public static DbUp.Builder.UpgradeEngineBuilder SqlDatabase(this DbUp.Builder.SupportedDatabases supported, Microsoft.Data.SqlClient.SqlConnection connection, string schema) { }
1719
public static DbUp.Builder.UpgradeEngineBuilder SqlDatabase(this DbUp.Builder.SupportedDatabases supported, string connectionString, string schema) { }
1820
public static void SqlDatabase(this DbUp.SupportedDatabasesForDropDatabase supported, string connectionString, int commandTimeout) { }
1921
public static bool SqlDatabase(this DbUp.SupportedDatabasesForEnsureDatabase supported, string connectionString, DbUp.SqlServer.AzureDatabaseEdition azureDatabaseEdition) { }
@@ -46,6 +48,7 @@ public override System.Collections.Generic.IEnumerable<string> SplitScriptIntoCo
4648
}
4749
public class SqlConnectionManager : DbUp.Engine.Transactions.DatabaseConnectionManager
4850
{
51+
public SqlConnectionManager(Microsoft.Data.SqlClient.SqlConnection connection) { }
4952
public SqlConnectionManager(string connectionString) { }
5053
public override System.Collections.Generic.IEnumerable<string> SplitScriptIntoCommands(string scriptContents) { }
5154
}

src/dbup-sqlserver/SqlConnectionManager.cs

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using System.Collections.Generic;
1+
using System.Collections.Generic;
22
using Microsoft.Data.SqlClient;
33
using DbUp.Engine.Transactions;
44
using DbUp.Support;
@@ -15,15 +15,21 @@ public class SqlConnectionManager : DatabaseConnectionManager
1515
/// </summary>
1616
/// <param name="connectionString"></param>
1717
public SqlConnectionManager(string connectionString)
18-
: base(new DelegateConnectionFactory((log, dbManager) =>
19-
{
20-
var conn = new SqlConnection(connectionString);
18+
: this(new SqlConnection(connectionString))
19+
{ }
2120

22-
if (dbManager.IsScriptOutputLogged)
23-
conn.InfoMessage += (sender, e) => log.LogInformation($"{{0}}", e.Message);
21+
/// <summary>
22+
/// Manages Sql Database Connections using an existing connection.
23+
/// </summary>
24+
/// <param name="connection">The existing SQL connection to use.</param>
25+
public SqlConnectionManager(SqlConnection connection)
26+
: base(new DelegateConnectionFactory((log, dbManager) =>
27+
{
28+
if (dbManager.IsScriptOutputLogged)
29+
connection.InfoMessage += (sender, e) => log.LogInformation($"{{0}}", e.Message);
2430

25-
return conn;
26-
}))
31+
return connection;
32+
}))
2733
{ }
2834

2935
/// <inheritdoc/>

src/dbup-sqlserver/SqlServerExtensions.cs

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,19 @@ public static UpgradeEngineBuilder SqlDatabase(this SupportedDatabases supported
3131
return SqlDatabase(supported, connectionString, null);
3232
}
3333

34+
/// <summary>
35+
/// Creates an upgrader for SQL Server databases.
36+
/// </summary>
37+
/// <param name="supported">Fluent helper type.</param>
38+
/// <param name="connection">The sql connection.</param>
39+
/// <returns>
40+
/// A builder for a database upgrader designed for SQL Server databases.
41+
/// </returns>
42+
public static UpgradeEngineBuilder SqlDatabase(this SupportedDatabases supported, SqlConnection connection)
43+
{
44+
return SqlDatabase(supported, connection, null);
45+
}
46+
3447
/// <summary>
3548
/// Creates an upgrader for SQL Server databases.
3649
/// </summary>
@@ -62,6 +75,20 @@ public static UpgradeEngineBuilder SqlDatabase(this SupportedDatabases supported
6275
return supported.SqlDatabase(new SqlConnectionManager(connectionString), schema);
6376
}
6477

78+
/// <summary>
79+
/// Creates an upgrader for SQL Server databases.
80+
/// </summary>
81+
/// <param name="supported">Fluent helper type.</param>
82+
/// <param name="connection">The sql connection.</param>
83+
/// <param name="schema">The SQL schema name to use. Defaults to 'dbo'.</param>
84+
/// <returns>
85+
/// A builder for a database upgrader designed for SQL Server databases.
86+
/// </returns>
87+
public static UpgradeEngineBuilder SqlDatabase(this SupportedDatabases supported, SqlConnection connection, string schema)
88+
{
89+
return SqlDatabase(new SqlConnectionManager(connection), schema);
90+
}
91+
6592
/// <summary>
6693
/// Creates an upgrader for SQL Server databases.
6794
/// </summary>

0 commit comments

Comments
 (0)