Move Migrations into Master and Tenant folders so its clear what type of Migration is being applied

This commit is contained in:
Charles Nurse
2021-05-25 12:16:10 -07:00
parent 7ec3376308
commit 077b866e8c
17 changed files with 20 additions and 54 deletions

View File

@ -0,0 +1,64 @@
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
using Oqtane.Databases.Interfaces;
using Oqtane.Migrations.EntityBuilders;
using Oqtane.Repository;
namespace Oqtane.Migrations.Master
{
[DbContext(typeof(MasterDBContext))]
[Migration("Master.01.00.00.00")]
public class InitializeMaster : MultiDatabaseMigration
{
public InitializeMaster(IDatabase database) : base(database)
{
}
protected override void Up(MigrationBuilder migrationBuilder)
{
//Create Tenant table
var tenantEntityBuilder = new TenantEntityBuilder(migrationBuilder, ActiveDatabase);
tenantEntityBuilder.Create();
//Create Alias table
var aliasEntityBuilder = new AliasEntityBuilder(migrationBuilder, ActiveDatabase);
aliasEntityBuilder.Create();
//Create ModuleDefinitions Table
var moduleDefinitionsEntityBuilder = new ModuleDefinitionsEntityBuilder(migrationBuilder, ActiveDatabase);
moduleDefinitionsEntityBuilder.Create();
//Create Job Table
var jobEntityBuilder = new JobEntityBuilder(migrationBuilder, ActiveDatabase);
jobEntityBuilder.Create();
//Create JobLog Table
var jobLogEntityBuilder = new JobLogEntityBuilder(migrationBuilder, ActiveDatabase);
jobLogEntityBuilder.Create();
}
protected override void Down(MigrationBuilder migrationBuilder)
{
//Drop Alias table
var aliasEntityBuilder = new AliasEntityBuilder(migrationBuilder, ActiveDatabase);
aliasEntityBuilder.Drop();
//Drop JobLog Table
var jobLogEntityBuilder = new JobLogEntityBuilder(migrationBuilder, ActiveDatabase);
jobLogEntityBuilder.Drop();
//Drop Tenant table
var tenantEntityBuilder = new TenantEntityBuilder(migrationBuilder, ActiveDatabase);
tenantEntityBuilder.Drop();
//Drop ModuleDefinitions Table
var moduleDefinitionsEntityBuilder = new ModuleDefinitionsEntityBuilder(migrationBuilder, ActiveDatabase);
moduleDefinitionsEntityBuilder.Drop();
//Drop Job Table
var jobEntityBuilder = new JobEntityBuilder(migrationBuilder, ActiveDatabase);
jobEntityBuilder.Drop();
}
}
}

View File

@ -0,0 +1,55 @@
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
using Oqtane.Databases.Interfaces;
using Oqtane.Migrations.EntityBuilders;
using Oqtane.Repository;
namespace Oqtane.Migrations.Master
{
[DbContext(typeof(MasterDBContext))]
[Migration("Master.01.00.01.00")]
public class AddAdditionalIndexesInMaster : MultiDatabaseMigration
{
public AddAdditionalIndexesInMaster(IDatabase database) : base(database)
{
}
protected override void Up(MigrationBuilder migrationBuilder)
{
//Update Tenant table
var tenantEntityBuilder = new TenantEntityBuilder(migrationBuilder, ActiveDatabase);
tenantEntityBuilder.AddIndex("IX_Tenant", "Name");
//Update Alias table
var aliasEntityBuilder = new AliasEntityBuilder(migrationBuilder, ActiveDatabase);
aliasEntityBuilder.AddIndex("IX_Alias", "Name");
//Update ModuleDefinitions Table
var moduleDefinitionsEntityBuilder = new ModuleDefinitionsEntityBuilder(migrationBuilder, ActiveDatabase);
moduleDefinitionsEntityBuilder.AddIndex("IX_ModuleDefinition", "ModuleDefinitionName");
//Update Job Table
var jobEntityBuilder = new JobEntityBuilder(migrationBuilder, ActiveDatabase);
jobEntityBuilder.AddIndex("IX_Job", "JobType");
}
protected override void Down(MigrationBuilder migrationBuilder)
{
//Update Tenant table
var tenantEntityBuilder = new TenantEntityBuilder(migrationBuilder, ActiveDatabase);
tenantEntityBuilder.DropIndex("IX_Tenant");
//Update Alias table
var aliasEntityBuilder = new AliasEntityBuilder(migrationBuilder, ActiveDatabase);
aliasEntityBuilder.DropIndex("IX_Alias");
//Update ModuleDefinitions Table
var moduleDefinitionsEntityBuilder = new ModuleDefinitionsEntityBuilder(migrationBuilder, ActiveDatabase);
moduleDefinitionsEntityBuilder.DropIndex("IX_ModuleDefinition");
//Update Job Table
var jobEntityBuilder = new JobEntityBuilder(migrationBuilder, ActiveDatabase);
jobEntityBuilder.DropIndex("IX_Job");
}
}
}

View File

@ -0,0 +1,39 @@
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
using Oqtane.Databases.Interfaces;
using Oqtane.Migrations.EntityBuilders;
using Oqtane.Repository;
namespace Oqtane.Migrations.Master
{
[DbContext(typeof(MasterDBContext))]
[Migration("Master.02.01.00.00")]
public class AddIndexesForForeignKeyInMaster : MultiDatabaseMigration
{
public AddIndexesForForeignKeyInMaster(IDatabase database) : base(database)
{
}
protected override void Up(MigrationBuilder migrationBuilder)
{
//Update JobLog table
var jobLogEntityBuilder = new JobLogEntityBuilder(migrationBuilder, ActiveDatabase);
jobLogEntityBuilder.AddIndex("IX_JobLog_JobId", "JobId");
//Update Alias table
var aliasEntityBuilder = new AliasEntityBuilder(migrationBuilder, ActiveDatabase);
aliasEntityBuilder.AddIndex("IX_Alias_TenantId", "TenantId");
}
protected override void Down(MigrationBuilder migrationBuilder)
{
//Update JobLog table
var jobLogEntityBuilder = new JobLogEntityBuilder(migrationBuilder, ActiveDatabase);
jobLogEntityBuilder.DropIndex("IX_JobLog_JobId");
//Update Alias table
var aliasEntityBuilder = new AliasEntityBuilder(migrationBuilder, ActiveDatabase);
aliasEntityBuilder.DropIndex("IX_Alias_TenantId");
}
}
}

View File

@ -0,0 +1,30 @@
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
using Oqtane.Databases.Interfaces;
using Oqtane.Migrations.EntityBuilders;
using Oqtane.Repository;
namespace Oqtane.Migrations.Master
{
[DbContext(typeof(MasterDBContext))]
[Migration("Master.02.01.00.01")]
public class AddDatabaseTypeColumnToTenant : MultiDatabaseMigration
{
public AddDatabaseTypeColumnToTenant(IDatabase database) : base(database)
{
}
protected override void Up(MigrationBuilder migrationBuilder)
{
//Add Column to Site table
var tenantEntityBuilder = new TenantEntityBuilder(migrationBuilder, ActiveDatabase);
tenantEntityBuilder.AddStringColumn("DBType", 200, true);
//Update new column if SqlServer (Other Databases will not have any records yet)
if (ActiveDatabase.Name == "SqlServer")
{
tenantEntityBuilder.UpdateColumn("DBType", $"'{ActiveDatabase.TypeName}'");
}
}
}
}