Skip to content

Commit

Permalink
1.0.0-beta-sun-build70 Version:
Browse files Browse the repository at this point in the history
      Fix issue 32: #32
      Fix issue 34: #34

      Usage:

      var database = await SqlServerDatabaseFactory.ImportAsync("Your connection string!");

      Wiki: https://github.com/hherzl/CatFactory.SqlServer/wiki
  • Loading branch information
hherzl committed May 1, 2023
1 parent 1150cea commit 6409fa8
Show file tree
Hide file tree
Showing 5 changed files with 90 additions and 105 deletions.
80 changes: 16 additions & 64 deletions CatFactory.SqlServer.Tests/DocumentationTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,7 @@ public class DocumentationTests
public async Task GetExtendedProperties()
{
// Arrange
var dbFactory = new SqlServerDatabaseFactory
{
DatabaseImportSettings = DatabaseImportSettings.Create(AdventureWorks2017ConnectionString, SqlServerToken.MS_DESCRIPTION)
};
var dbFactory = new SqlServerDatabaseFactory(DatabaseImportSettings.Create("AdventureWorks2017", AdventureWorks2017ConnectionString, SqlServerToken.MS_DESCRIPTION));

// Act
var db = (SqlServerDatabase)await dbFactory.ImportAsync();
Expand All @@ -37,10 +34,7 @@ public async Task GetExtendedProperties()
public async Task AddExtendedPropertiesForDatabase()
{
// Arrange
var dbFactory = new SqlServerDatabaseFactory
{
DatabaseImportSettings = DatabaseImportSettings.Create(OnlineStoreConnectionString, SqlServerToken.MS_DESCRIPTION)
};
var dbFactory = new SqlServerDatabaseFactory(DatabaseImportSettings.Create("OnlineStore", OnlineStoreConnectionString, SqlServerToken.MS_DESCRIPTION));

// Act
var db = await dbFactory.ImportAsync();
Expand All @@ -55,10 +49,7 @@ public async Task AddExtendedPropertiesForDatabase()
public async Task AddExtendedPropertiesForTable()
{
// Arrange
var dbFactory = new SqlServerDatabaseFactory
{
DatabaseImportSettings = DatabaseImportSettings.Create(OnlineStoreConnectionString, SqlServerToken.MS_DESCRIPTION)
};
var dbFactory = new SqlServerDatabaseFactory(DatabaseImportSettings.Create("OnlineStore", OnlineStoreConnectionString, SqlServerToken.MS_DESCRIPTION));

// Act
var db = await dbFactory.ImportAsync();
Expand All @@ -74,10 +65,7 @@ public async Task AddExtendedPropertiesForTable()
public async Task AddExtendedPropertiesForColumnFromTable()
{
// Arrange
var dbFactory = new SqlServerDatabaseFactory
{
DatabaseImportSettings = DatabaseImportSettings.Create(OnlineStoreConnectionString, SqlServerToken.MS_DESCRIPTION)
};
var dbFactory = new SqlServerDatabaseFactory(DatabaseImportSettings.Create("OnlineStore", OnlineStoreConnectionString, SqlServerToken.MS_DESCRIPTION));

// Act
var db = await dbFactory.ImportAsync();
Expand All @@ -93,10 +81,7 @@ public async Task AddExtendedPropertiesForColumnFromTable()
public async Task AddExtendedPropertiesForView()
{
// Arrange
var dbFactory = new SqlServerDatabaseFactory
{
DatabaseImportSettings = DatabaseImportSettings.Create(OnlineStoreConnectionString, SqlServerToken.MS_DESCRIPTION)
};
var dbFactory = new SqlServerDatabaseFactory(DatabaseImportSettings.Create("OnlineStore", OnlineStoreConnectionString, SqlServerToken.MS_DESCRIPTION));

// Act
var db = await dbFactory.ImportAsync();
Expand All @@ -112,10 +97,7 @@ public async Task AddExtendedPropertiesForView()
public async Task AddExtendedPropertiesForColumnFromView()
{
// Arrange
var dbFactory = new SqlServerDatabaseFactory
{
DatabaseImportSettings = DatabaseImportSettings.Create(OnlineStoreConnectionString, SqlServerToken.MS_DESCRIPTION)
};
var dbFactory = new SqlServerDatabaseFactory(DatabaseImportSettings.Create("OnlineStore", OnlineStoreConnectionString, SqlServerToken.MS_DESCRIPTION));

// Act
var db = await dbFactory.ImportAsync();
Expand All @@ -129,10 +111,7 @@ public async Task AddExtendedPropertiesForColumnFromView()
public async Task UpdateExtendedPropertiesForDatabase()
{
// Arrange
var dbFactory = new SqlServerDatabaseFactory
{
DatabaseImportSettings = DatabaseImportSettings.Create(OnlineStoreConnectionString, SqlServerToken.MS_DESCRIPTION)
};
var dbFactory = new SqlServerDatabaseFactory(DatabaseImportSettings.Create("OnlineStore", OnlineStoreConnectionString, SqlServerToken.MS_DESCRIPTION));

// Act
var db = await dbFactory.ImportAsync();
Expand All @@ -148,10 +127,7 @@ public async Task UpdateExtendedPropertiesForDatabase()
public async Task UpdateExtendedPropertiesForTable()
{
// Arrange
var dbFactory = new SqlServerDatabaseFactory
{
DatabaseImportSettings = DatabaseImportSettings.Create(OnlineStoreConnectionString, SqlServerToken.MS_DESCRIPTION)
};
var dbFactory = new SqlServerDatabaseFactory(DatabaseImportSettings.Create("OnlineStore", OnlineStoreConnectionString, SqlServerToken.MS_DESCRIPTION));

// Act
var db = await dbFactory.ImportAsync();
Expand All @@ -168,10 +144,7 @@ public async Task UpdateExtendedPropertiesForTable()
public async Task UpdateExtendedPropertiesForColumnFromTable()
{
// Arrange
var dbFactory = new SqlServerDatabaseFactory
{
DatabaseImportSettings = DatabaseImportSettings.Create(OnlineStoreConnectionString, SqlServerToken.MS_DESCRIPTION)
};
var dbFactory = new SqlServerDatabaseFactory(DatabaseImportSettings.Create("OnlineStore", OnlineStoreConnectionString, SqlServerToken.MS_DESCRIPTION));

// Act
var db = await dbFactory.ImportAsync();
Expand All @@ -188,10 +161,7 @@ public async Task UpdateExtendedPropertiesForColumnFromTable()
public async Task UpdateExtendedPropertiesForView()
{
// Arrange
var dbFactory = new SqlServerDatabaseFactory
{
DatabaseImportSettings = DatabaseImportSettings.Create(OnlineStoreConnectionString, SqlServerToken.MS_DESCRIPTION)
};
var dbFactory = new SqlServerDatabaseFactory(DatabaseImportSettings.Create("OnlineStore", OnlineStoreConnectionString, SqlServerToken.MS_DESCRIPTION));

// Act
var db = await dbFactory.ImportAsync();
Expand All @@ -208,10 +178,7 @@ public async Task UpdateExtendedPropertiesForView()
public async Task UpdateExtendedPropertiesForColumnFromView()
{
// Arrange
var dbFactory = new SqlServerDatabaseFactory
{
DatabaseImportSettings = DatabaseImportSettings.Create(OnlineStoreConnectionString, SqlServerToken.MS_DESCRIPTION)
};
var dbFactory = new SqlServerDatabaseFactory(DatabaseImportSettings.Create("OnlineStore", OnlineStoreConnectionString, SqlServerToken.MS_DESCRIPTION));

// Act
var db = await dbFactory.ImportAsync();
Expand All @@ -226,10 +193,7 @@ public async Task UpdateExtendedPropertiesForColumnFromView()
public async Task DropExtendedPropertiesForDatabase()
{
// Arrange
var dbFactory = new SqlServerDatabaseFactory
{
DatabaseImportSettings = DatabaseImportSettings.Create(OnlineStoreConnectionString, SqlServerToken.MS_DESCRIPTION)
};
var dbFactory = new SqlServerDatabaseFactory(DatabaseImportSettings.Create("OnlineStore", OnlineStoreConnectionString, SqlServerToken.MS_DESCRIPTION));

// Act
var db = await dbFactory.ImportAsync();
Expand All @@ -243,10 +207,7 @@ public async Task DropExtendedPropertiesForDatabase()
public async Task DropExtendedPropertiesForTable()
{
// Arrange
var dbFactory = new SqlServerDatabaseFactory
{
DatabaseImportSettings = DatabaseImportSettings.Create(OnlineStoreConnectionString, SqlServerToken.MS_DESCRIPTION)
};
var dbFactory = new SqlServerDatabaseFactory(DatabaseImportSettings.Create("OnlineStore", OnlineStoreConnectionString, SqlServerToken.MS_DESCRIPTION));

// Act
var db = await dbFactory.ImportAsync();
Expand All @@ -261,10 +222,7 @@ public async Task DropExtendedPropertiesForTable()
public async Task DropExtendedPropertiesForColumnFromTable()
{
// Arrange
var dbFactory = new SqlServerDatabaseFactory
{
DatabaseImportSettings = DatabaseImportSettings.Create(OnlineStoreConnectionString, SqlServerToken.MS_DESCRIPTION)
};
var dbFactory = new SqlServerDatabaseFactory(DatabaseImportSettings.Create("OnlineStore", OnlineStoreConnectionString, SqlServerToken.MS_DESCRIPTION));

// Act
var db = await dbFactory.ImportAsync();
Expand All @@ -279,10 +237,7 @@ public async Task DropExtendedPropertiesForColumnFromTable()
public async Task DropExtendedPropertiesForView()
{
// Arrange
var dbFactory = new SqlServerDatabaseFactory
{
DatabaseImportSettings = DatabaseImportSettings.Create(OnlineStoreConnectionString, SqlServerToken.MS_DESCRIPTION)
};
var dbFactory = new SqlServerDatabaseFactory(DatabaseImportSettings.Create("OnlineStore", OnlineStoreConnectionString, SqlServerToken.MS_DESCRIPTION));

// Act
var db = await dbFactory.ImportAsync();
Expand All @@ -297,10 +252,7 @@ public async Task DropExtendedPropertiesForView()
public async Task DropExtendedPropertiesForColumnFromView()
{
// Arrange
var dbFactory = new SqlServerDatabaseFactory
{
DatabaseImportSettings = DatabaseImportSettings.Create(OnlineStoreConnectionString, SqlServerToken.MS_DESCRIPTION)
};
var dbFactory = new SqlServerDatabaseFactory(DatabaseImportSettings.Create("OnlineStore", OnlineStoreConnectionString, SqlServerToken.MS_DESCRIPTION));

// Act
var db = await dbFactory.ImportAsync();
Expand Down
51 changes: 15 additions & 36 deletions CatFactory.SqlServer.Tests/ImportTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,7 @@ public async Task ImportOnlineStoreDatabaseAsync()
public async Task ImportTablesFromOnlineStoreDatabaseAsync()
{
// Arrange and Act
var database = await SqlServerDatabaseFactory
.ImportTablesAsync(OnlineStoreConnectionString, "Sales.OrderHeader", "Sales.OrderDetail");
var database = await SqlServerDatabaseFactory.ImportTablesAsync(OnlineStoreConnectionString, "Sales.OrderHeader", "Sales.OrderDetail");

// Assert
Assert.True(database.Tables.Count == 2);
Expand All @@ -51,20 +50,14 @@ public async Task ImportTablesFromOnlineStoreDatabaseAsync()
public async Task ImportAdventureWorksDatabaseAsync()
{
// Arrange
var databaseFactory = new SqlServerDatabaseFactory(SqlServerDatabaseFactory.GetLogger())
var databaseFactory = new SqlServerDatabaseFactory(SqlServerDatabaseFactory.GetLogger(), new DatabaseImportSettings
{
DatabaseImportSettings = new DatabaseImportSettings
{
ConnectionString = AdventureWorks2017ConnectionString,
ImportStoredProcedures = true,
ImportScalarFunctions = true,
ImportTableFunctions = true,
ExclusionTypes =
{
"geography"
}
}
};
ConnectionString = AdventureWorks2017ConnectionString,
ImportStoredProcedures = true,
ImportScalarFunctions = true,
ImportTableFunctions = true,
ExclusionTypes = { "geography" }
});

// Act
var database = (SqlServerDatabase)await databaseFactory.ImportAsync();
Expand Down Expand Up @@ -93,14 +86,7 @@ public async Task ImportAdventureWorksDatabaseAsync()
public async Task ImportWideWorldImportersDatabaseAsync()
{
// Arrange
var databaseFactory = new SqlServerDatabaseFactory
{
DatabaseImportSettings = new DatabaseImportSettings
{
ConnectionString = WideWorldImportersConnectionString,
ImportSequences = true
}
};
var databaseFactory = new SqlServerDatabaseFactory(DatabaseImportSettings.Create(connectionString: WideWorldImportersConnectionString, importSequences: true));

// Act
var database = (SqlServerDatabase)await databaseFactory.ImportAsync();
Expand Down Expand Up @@ -139,16 +125,9 @@ public async Task ImportNorthwindDatabaseAsync()
public async Task FullImportNorthwindDatabaseAsync()
{
// Arrange
var databaseFactory = new SqlServerDatabaseFactory
{
DatabaseImportSettings = new DatabaseImportSettings
{
ConnectionString = NorthwindConnectionString,
ImportStoredProcedures = true,
ImportTableFunctions = true,
ImportScalarFunctions = true
}
};
var databaseFactory = new SqlServerDatabaseFactory(
DatabaseImportSettings.Create(connectionString: NorthwindConnectionString, importScalarFunctions: true, importTableFunctions: true, importStoredProcedures: true)
);

// Act
var database = (SqlServerDatabase)await databaseFactory.ImportAsync();
Expand Down Expand Up @@ -184,8 +163,7 @@ public async Task ImportTablesFromNorthwindDatabaseAsync()
public async Task ImportNorthwindViewsAsync()
{
// Arrange and Act
var database = await SqlServerDatabaseFactory
.ImportViewsAsync(NorthwindConnectionString);
var database = await SqlServerDatabaseFactory.ImportViewsAsync(NorthwindConnectionString);

// Assert
Assert.True(database.Tables.Count == 0);
Expand All @@ -197,7 +175,8 @@ public async Task ImportTablesAndViewsFromNorthwindAsync()
{
// Arrange and Act
var database = await SqlServerDatabaseFactory
.ImportTablesAndViewsAsync(NorthwindConnectionString, "dbo.Orders", "dbo.Order Details", "dbo.Category Sales for 1997", "dbo.Product Sales for 1997");
.ImportTablesAndViewsAsync(NorthwindConnectionString, "dbo.Orders", "dbo.Order Details", "dbo.Category Sales for 1997", "dbo.Product Sales for 1997")
;

// Assert
Assert.True(database.Tables.Count == 2);
Expand Down
3 changes: 2 additions & 1 deletion CatFactory.SqlServer/CatFactory.SqlServer.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,9 @@
<PackageTags>SQL Server Scaffolding Stored Procedures</PackageTags>
<PackageReleaseNotes>
1.0.0-beta-sun-build70 Version:

Fix issue 32: https://github.com/hherzl/CatFactory.SqlServer/issues/32
Fix issue 34: https://github.com/hherzl/CatFactory.SqlServer/issues/34

Usage:

Expand Down
41 changes: 37 additions & 4 deletions CatFactory.SqlServer/DatabaseImportSettings.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,31 +11,64 @@ public class DatabaseImportSettings
/// <summary>
/// Creates a new instance of <see cref="DatabaseImportSettings"/>
/// </summary>
/// <param name="name">Name</param>
/// <param name="connectionString">Connection string</param>
/// <param name="extendedProperties">Extended properties</param>
/// <returns></returns>
public static DatabaseImportSettings Create(string connectionString, params string[] extendedProperties)
/// <returns>The database import settings</returns>
public static DatabaseImportSettings Create(string name, string connectionString, params string[] extendedProperties)
=> new()
{
Name = name,
ConnectionString = connectionString,
ExtendedProperties = new List<string>(extendedProperties)
};

/// <summary>
/// Creates a new instance of <see cref="DatabaseImportSettings"/>
/// </summary>
/// <param name="name">Name</param>
/// <param name="connectionString">Connection string</param>
/// <param name="importTables">Import tables flag</param>
/// <param name="importViews">Import views flag</param>
/// <param name="extendedProperties">Extended properties</param>
/// <returns></returns>
public static DatabaseImportSettings Create(string connectionString, bool importTables, bool importViews, params string[] extendedProperties)
/// <returns>The database import settings</returns>
public static DatabaseImportSettings Create(string name, string connectionString, bool importTables, bool importViews, params string[] extendedProperties)
=> new()
{
Name = name,
ConnectionString = connectionString,
ImportTables = importTables,
ImportViews = importViews,
ExtendedProperties = new List<string>(extendedProperties)
};

/// <summary>
/// Creates a new instance of <see cref="DatabaseImportSettings"/>
/// </summary>
/// <param name="name">Name</param>
/// <param name="connectionString">Connection string</param>
/// <param name="importTables">Import tables flag</param>
/// <param name="importViews">Import views flag</param>
/// <param name="importScalarFunctions">Import scalar functions flag</param>
/// <param name="importTableFunctions">Import table functions flag</param>
/// <param name="importStoredProcedures">Import stored procedures flag</param>
/// <param name="importSequences">Import sequences flag</param>
/// <param name="extendedProperties">Extended properties</param>
/// <returns>The database import settings</returns>
public static DatabaseImportSettings Create(string name = "", string connectionString = "", bool importTables = true, bool importViews = true, bool importScalarFunctions = false, bool importTableFunctions = false, bool importStoredProcedures = false, bool importSequences = false, string[] extendedProperties = null)
=> new()
{
Name = name,
ConnectionString = connectionString,
ImportTables = importTables,
ImportViews = importViews,
ImportScalarFunctions = importScalarFunctions,
ImportTableFunctions = importTableFunctions,
ImportStoredProcedures = importStoredProcedures,
ImportSequences = importSequences,
ExtendedProperties = extendedProperties == null ? new List<string>() : new List<string>(extendedProperties)
};

[DebuggerBrowsable(DebuggerBrowsableState.Never)]
private List<string> m_exclusions;

Expand Down
20 changes: 20 additions & 0 deletions CatFactory.SqlServer/SqlServerDatabaseFactory.cs
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,26 @@ public SqlServerDatabaseFactory(ILogger<SqlServerDatabaseFactory> logger)
Logger = logger;
}

/// <summary>
/// Initializes a new instance for <see cref="SqlServerDatabaseFactory"/> class
/// </summary>
/// <param name="databaseImportSettings">Instance of <see cref="DatabaseImportSettings"/> class</param>
public SqlServerDatabaseFactory(DatabaseImportSettings databaseImportSettings)
{
m_databaseImportSettings = databaseImportSettings;
}

/// <summary>
/// Initializes a new instance for <see cref="SqlServerDatabaseFactory"/> class
/// </summary>
/// <param name="logger"><see cref="Logger"/> class</param>
/// <param name="databaseImportSettings">Instance of <see cref="DatabaseImportSettings"/> class</param>
public SqlServerDatabaseFactory(ILogger<SqlServerDatabaseFactory> logger, DatabaseImportSettings databaseImportSettings)
{
Logger = logger;
m_databaseImportSettings = databaseImportSettings;
}

/// <summary>
/// Gets the <see cref="Logger"/> instance
/// </summary>
Expand Down

0 comments on commit 6409fa8

Please sign in to comment.