using DbUp; using DbUp.Engine; using Microsoft.Extensions.Configuration; namespace JdeScoping.Database; /// /// Handles database migrations using DbUp. /// public class DatabaseMigrator : IDatabaseMigrator { private readonly string _connectionString; /// /// Initializes a new instance of the DatabaseMigrator class. /// /// Application configuration containing connection strings. /// Thrown when SqlServer connection string is not configured. public DatabaseMigrator(IConfiguration configuration) { _connectionString = configuration.GetConnectionString("SqlServer") ?? throw new InvalidOperationException("SqlServer connection string not configured"); } /// public DatabaseUpgradeResult Migrate() { EnsureDatabase.For.SqlDatabase(_connectionString); var upgrader = DeployChanges.To .SqlDatabase(_connectionString) .WithScriptsEmbeddedInAssembly(typeof(DatabaseMigrator).Assembly) .WithTransaction() .LogToConsole() .Build(); return upgrader.PerformUpgrade(); } }