Remove DbConfig and new constructors on DbContextBase and refactor Migrations to use explcit generation of IOqtaneDatabase instance

This commit is contained in:
Charles Nurse
2021-05-12 15:17:40 -07:00
parent c958f90ee2
commit c036a9d11f
34 changed files with 137 additions and 225 deletions

View File

@ -11,7 +11,7 @@ namespace Oqtane.Migrations
[Migration("Master.01.00.00.00")]
public class InitializeMaster : MultiDatabaseMigration
{
public InitializeMaster(IEnumerable<IOqtaneDatabase> databases) : base(databases)
public InitializeMaster(IOqtaneDatabase database) : base(database)
{
}

View File

@ -12,7 +12,7 @@ namespace Oqtane.Migrations
[Migration("Tenant.01.00.00.00")]
public class InitializeTenant : MultiDatabaseMigration
{
public InitializeTenant(IEnumerable<IOqtaneDatabase> databases) : base(databases)
public InitializeTenant(IOqtaneDatabase database) : base(database)
{
}

View File

@ -11,7 +11,7 @@ namespace Oqtane.Migrations
[Migration("Master.01.00.01.00")]
public class AddAdditionalIndexesInMaster : MultiDatabaseMigration
{
public AddAdditionalIndexesInMaster(IEnumerable<IOqtaneDatabase> databases) : base(databases)
public AddAdditionalIndexesInMaster(IOqtaneDatabase database) : base(database)
{
}

View File

@ -11,7 +11,7 @@ namespace Oqtane.Migrations
[Migration("Tenant.01.00.01.00")]
public class AddAdditionalIndexesInTenant : MultiDatabaseMigration
{
public AddAdditionalIndexesInTenant(IEnumerable<IOqtaneDatabase> databases) : base(databases)
public AddAdditionalIndexesInTenant(IOqtaneDatabase database) : base(database)
{
}

View File

@ -11,7 +11,7 @@ namespace Oqtane.Migrations
[Migration("Tenant.01.00.01.01")]
public class AddAdditionColumnToNotifications : MultiDatabaseMigration
{
public AddAdditionColumnToNotifications(IEnumerable<IOqtaneDatabase> databases) : base(databases)
public AddAdditionColumnToNotifications(IOqtaneDatabase database) : base(database)
{
}

View File

@ -11,7 +11,7 @@ namespace Oqtane.Migrations
[Migration("Tenant.01.00.02.01")]
public class DropColumnFromPage : MultiDatabaseMigration
{
public DropColumnFromPage(IEnumerable<IOqtaneDatabase> databases) : base(databases)
public DropColumnFromPage(IOqtaneDatabase database) : base(database)
{
}

View File

@ -11,7 +11,7 @@ namespace Oqtane.Migrations
[Migration("Tenant.02.00.00.01")]
public class AddColumnToProfileAndUpdatePage : MultiDatabaseMigration
{
public AddColumnToProfileAndUpdatePage(IEnumerable<IOqtaneDatabase> databases) : base(databases)
public AddColumnToProfileAndUpdatePage(IOqtaneDatabase database) : base(database)
{
}

View File

@ -11,7 +11,7 @@ namespace Oqtane.Migrations
[Migration("Tenant.02.00.01.01")]
public class UpdateIconColumnInPage : MultiDatabaseMigration
{
public UpdateIconColumnInPage(IEnumerable<IOqtaneDatabase> databases) : base(databases)
public UpdateIconColumnInPage(IOqtaneDatabase database) : base(database)
{
}

View File

@ -11,7 +11,7 @@ namespace Oqtane.Migrations
[Migration("Tenant.02.00.01.02")]
public class AddLanguageTable : MultiDatabaseMigration
{
public AddLanguageTable(IEnumerable<IOqtaneDatabase> databases) : base(databases)
public AddLanguageTable(IOqtaneDatabase database) : base(database)
{
}

View File

@ -11,7 +11,7 @@ namespace Oqtane.Migrations
[Migration("Tenant.02.00.01.03")]
public class UpdatePageAndAddColumnToSite : MultiDatabaseMigration
{
public UpdatePageAndAddColumnToSite(IEnumerable<IOqtaneDatabase> databases) : base(databases)
public UpdatePageAndAddColumnToSite(IOqtaneDatabase database) : base(database)
{
}

View File

@ -12,7 +12,7 @@ namespace Oqtane.Migrations
public class AddSiteGuidToSite : MultiDatabaseMigration
{
public AddSiteGuidToSite(IEnumerable<IOqtaneDatabase> databases) : base(databases)
public AddSiteGuidToSite(IOqtaneDatabase database) : base(database)
{
}

View File

@ -11,7 +11,7 @@ namespace Oqtane.Migrations
[Migration("Tenant.02.00.02.02")]
public class UpdateDefaultContainerTypeInSitePage : MultiDatabaseMigration
{
public UpdateDefaultContainerTypeInSitePage(IEnumerable<IOqtaneDatabase> databases) : base(databases)
public UpdateDefaultContainerTypeInSitePage(IOqtaneDatabase database) : base(database)
{
}

View File

@ -11,7 +11,7 @@ namespace Oqtane.Migrations
[Migration("Tenant.02.00.02.03")]
public class DropDefaultLayoutInSite : MultiDatabaseMigration
{
public DropDefaultLayoutInSite(IEnumerable<IOqtaneDatabase> databases) : base(databases)
public DropDefaultLayoutInSite(IOqtaneDatabase database) : base(database)
{
}

View File

@ -12,7 +12,7 @@ namespace Oqtane.Migrations
[Migration("Tenant.02.01.00.00")]
public class AddAppVersionsTable : MultiDatabaseMigration
{
public AddAppVersionsTable(IEnumerable<IOqtaneDatabase> databases) : base(databases)
public AddAppVersionsTable(IOqtaneDatabase database) : base(database)
{
}

View File

@ -11,7 +11,7 @@ namespace Oqtane.Migrations
[Migration("Master.02.01.00.00")]
public class AddIndexesForForeignKeyInMaster : MultiDatabaseMigration
{
public AddIndexesForForeignKeyInMaster(IEnumerable<IOqtaneDatabase> databases) : base(databases)
public AddIndexesForForeignKeyInMaster(IOqtaneDatabase database) : base(database)
{
}

View File

@ -11,7 +11,7 @@ namespace Oqtane.Migrations
[Migration("Master.02.01.00.01")]
public class AddDatabaseTypeColumnToTenant : MultiDatabaseMigration
{
public AddDatabaseTypeColumnToTenant(IEnumerable<IOqtaneDatabase> databases) : base(databases)
public AddDatabaseTypeColumnToTenant(IOqtaneDatabase database) : base(database)
{
}

View File

@ -7,14 +7,14 @@ namespace Oqtane.Migrations
{
public abstract class MultiDatabaseMigration : Migration
{
private readonly IEnumerable<IOqtaneDatabase> _databases;
private readonly IOqtaneDatabase _databases;
protected MultiDatabaseMigration(IEnumerable<IOqtaneDatabase> databases)
protected MultiDatabaseMigration(IOqtaneDatabase database)
{
_databases = databases;
ActiveDatabase = database;
}
protected IOqtaneDatabase ActiveDatabase => _databases.FirstOrDefault(d => d.Provider == ActiveProvider);
protected IOqtaneDatabase ActiveDatabase { get; }
protected string RewriteName(string name)
{

View File

@ -13,7 +13,7 @@ namespace Oqtane.Migrations.Framework
{
public class MultiDatabaseMigrationsAssembly: MigrationsAssembly
{
private readonly IEnumerable<IOqtaneDatabase> _databases;
private readonly IOqtaneDatabase _database;
public MultiDatabaseMigrationsAssembly(
ICurrentDbContext currentContext,
@ -23,15 +23,15 @@ namespace Oqtane.Migrations.Framework
: base(currentContext, options, idGenerator, logger)
{
var multiDatabaseContext = currentContext.Context as IMultiDatabase;
if (multiDatabaseContext != null) _databases = multiDatabaseContext.Databases;
if (multiDatabaseContext != null) _database = multiDatabaseContext.ActiveDatabase;
}
public override Migration CreateMigration(TypeInfo migrationClass, string activeProvider)
{
var hasCtorWithCacheOptions = migrationClass.GetConstructor(new[] { typeof(IEnumerable<IOqtaneDatabase>) }) != null;
var hasCtorWithCacheOptions = migrationClass.GetConstructor(new[] { typeof(IOqtaneDatabase) }) != null;
if (hasCtorWithCacheOptions)
{
var migration = (Migration)Activator.CreateInstance(migrationClass.AsType(), _databases);
var migration = (Migration)Activator.CreateInstance(migrationClass.AsType(), _database);
if (migration != null)
{
migration.ActiveProvider = activeProvider;