604bfe919c
Apply comprehensive fixes from code reviews including: - Extract shared utilities (SqlFormatHelper, CellValueConverter, DbDestinationBase) - Add interface abstractions (IAuthenticationService, IDatabaseMigrator, IMisQueryBuilder) - Implement SecureStore for encrypted secrets storage - Fix error handling with proper HTTP status codes and logging - Optimize double enumeration in DevEtlRegistry - Add DataSync.Dev README for developer onboarding - Extract filter panel base classes to reduce duplication - Update code review docs to mark all issues as fixed
40 lines
1.3 KiB
C#
40 lines
1.3 KiB
C#
using DbUp;
|
|
using DbUp.Engine;
|
|
using Microsoft.Extensions.Configuration;
|
|
|
|
namespace JdeScoping.Database;
|
|
|
|
/// <summary>
|
|
/// Handles database migrations using DbUp.
|
|
/// </summary>
|
|
public class DatabaseMigrator : IDatabaseMigrator
|
|
{
|
|
private readonly string _connectionString;
|
|
|
|
/// <summary>
|
|
/// Initializes a new instance of the DatabaseMigrator class.
|
|
/// </summary>
|
|
/// <param name="configuration">Application configuration containing connection strings.</param>
|
|
/// <exception cref="InvalidOperationException">Thrown when SqlServer connection string is not configured.</exception>
|
|
public DatabaseMigrator(IConfiguration configuration)
|
|
{
|
|
_connectionString = configuration.GetConnectionString("SqlServer")
|
|
?? throw new InvalidOperationException("SqlServer connection string not configured");
|
|
}
|
|
|
|
/// <inheritdoc />
|
|
public DatabaseUpgradeResult Migrate()
|
|
{
|
|
EnsureDatabase.For.SqlDatabase(_connectionString);
|
|
|
|
var upgrader = DeployChanges.To
|
|
.SqlDatabase(_connectionString)
|
|
.WithScriptsEmbeddedInAssembly(typeof(DatabaseMigrator).Assembly)
|
|
.WithTransaction()
|
|
.LogToConsole()
|
|
.Build();
|
|
|
|
return upgrader.PerformUpgrade();
|
|
}
|
|
}
|