Added suuport to inject an IOqtaneDatabase in EntityBuilders to allow each Database to control certain Migration behaviors. Also updated Installer to dynamically build Database Configuration section
This commit is contained in:
@ -1,5 +1,7 @@
|
||||
using System.Collections.Generic;
|
||||
using Microsoft.EntityFrameworkCore.Infrastructure;
|
||||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
using Oqtane.Interfaces;
|
||||
using Oqtane.Migrations.EntityBuilders;
|
||||
using Oqtane.Repository;
|
||||
|
||||
@ -8,86 +10,90 @@ namespace Oqtane.Migrations
|
||||
{
|
||||
[DbContext(typeof(TenantDBContext))]
|
||||
[Migration("Tenant.01.00.00.00")]
|
||||
public class InitializeTenant : Migration
|
||||
public class InitializeTenant : MultiDatabaseMigration
|
||||
{
|
||||
public InitializeTenant(IEnumerable<IOqtaneDatabase> databases) : base(databases)
|
||||
{
|
||||
}
|
||||
|
||||
protected override void Up(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
//Create Site table
|
||||
var siteEntityBuilder = new SiteEntityBuilder(migrationBuilder);
|
||||
var siteEntityBuilder = new SiteEntityBuilder(migrationBuilder, ActiveDatabase);
|
||||
siteEntityBuilder.Create();
|
||||
|
||||
//Create Page table
|
||||
var pageEntityBuilder = new PageEntityBuilder(migrationBuilder);
|
||||
var pageEntityBuilder = new PageEntityBuilder(migrationBuilder, ActiveDatabase);
|
||||
pageEntityBuilder.Create();
|
||||
pageEntityBuilder.AddIndex("IX_Page", new [] {"SiteId", "Path", "UserId"}, true);
|
||||
|
||||
//Add Column to Page table (for Sql Server only) we will drop it later for Sql Server only
|
||||
if (migrationBuilder.ActiveProvider == "Microsoft.EntityFrameworkCore.SqlServer")
|
||||
if (ActiveDatabase.Name == "SqlServer" || ActiveDatabase.Name == "LocalDB")
|
||||
{
|
||||
pageEntityBuilder.AddBooleanColumn("EditMode");
|
||||
}
|
||||
|
||||
//Create Module table
|
||||
var moduleEntityBuilder = new ModuleEntityBuilder(migrationBuilder);
|
||||
var moduleEntityBuilder = new ModuleEntityBuilder(migrationBuilder, ActiveDatabase);
|
||||
moduleEntityBuilder.Create();
|
||||
|
||||
//Create PageModule table
|
||||
var pageModuleEntityBuilder = new PageModuleEntityBuilder(migrationBuilder);
|
||||
var pageModuleEntityBuilder = new PageModuleEntityBuilder(migrationBuilder, ActiveDatabase);
|
||||
pageModuleEntityBuilder.Create();
|
||||
|
||||
//Create User table
|
||||
var userEntityBuilder = new UserEntityBuilder(migrationBuilder);
|
||||
var userEntityBuilder = new UserEntityBuilder(migrationBuilder, ActiveDatabase);
|
||||
userEntityBuilder.Create();
|
||||
userEntityBuilder.AddIndex("IX_User", "Username", true);
|
||||
|
||||
//Create Role table
|
||||
var roleEntityBuilder = new RoleEntityBuilder(migrationBuilder);
|
||||
var roleEntityBuilder = new RoleEntityBuilder(migrationBuilder, ActiveDatabase);
|
||||
roleEntityBuilder.Create();
|
||||
|
||||
//Create UserRole table
|
||||
var userRoleEntityBuilder = new UserRoleEntityBuilder(migrationBuilder);
|
||||
var userRoleEntityBuilder = new UserRoleEntityBuilder(migrationBuilder, ActiveDatabase);
|
||||
userRoleEntityBuilder.Create();
|
||||
userRoleEntityBuilder.AddIndex("IX_UserRole", new [] {"RoleId", "UserId"}, true);
|
||||
|
||||
//Create Permission table
|
||||
var permissionEntityBuilder = new PermissionEntityBuilder(migrationBuilder);
|
||||
var permissionEntityBuilder = new PermissionEntityBuilder(migrationBuilder, ActiveDatabase);
|
||||
permissionEntityBuilder.Create();
|
||||
permissionEntityBuilder.AddIndex("IX_Permission", new [] {"SiteId", "EntityName", "EntityId", "PermissionName", "RoleId", "UserId"}, true);
|
||||
|
||||
//Create Setting table
|
||||
var settingEntityBuilder = new SettingEntityBuilder(migrationBuilder);
|
||||
var settingEntityBuilder = new SettingEntityBuilder(migrationBuilder, ActiveDatabase);
|
||||
settingEntityBuilder.Create();
|
||||
settingEntityBuilder.AddIndex("IX_Setting", new [] {"EntityName", "EntityId", "SettingName"}, true);
|
||||
|
||||
//Create Profile table
|
||||
var profileEntityBuilder = new ProfileEntityBuilder(migrationBuilder);
|
||||
var profileEntityBuilder = new ProfileEntityBuilder(migrationBuilder, ActiveDatabase);
|
||||
profileEntityBuilder.Create();
|
||||
|
||||
//Create Log table
|
||||
var logEntityBuilder = new LogEntityBuilder(migrationBuilder);
|
||||
var logEntityBuilder = new LogEntityBuilder(migrationBuilder, ActiveDatabase);
|
||||
logEntityBuilder.Create();
|
||||
|
||||
//Create Notification table
|
||||
var notificationEntityBuilder = new NotificationEntityBuilder(migrationBuilder);
|
||||
var notificationEntityBuilder = new NotificationEntityBuilder(migrationBuilder, ActiveDatabase);
|
||||
notificationEntityBuilder.Create();
|
||||
|
||||
//Create Folder table
|
||||
var folderEntityBuilder = new FolderEntityBuilder(migrationBuilder);
|
||||
var folderEntityBuilder = new FolderEntityBuilder(migrationBuilder, ActiveDatabase);
|
||||
folderEntityBuilder.Create();
|
||||
folderEntityBuilder.AddIndex("IX_Folder", new [] {"SiteId", "Path"}, true);
|
||||
|
||||
//Create File table
|
||||
var fileEntityBuilder = new FileEntityBuilder(migrationBuilder);
|
||||
var fileEntityBuilder = new FileEntityBuilder(migrationBuilder, ActiveDatabase);
|
||||
fileEntityBuilder.Create();
|
||||
|
||||
//Create AspNetUsers table
|
||||
var aspNetUsersEntityBuilder = new AspNetUsersEntityBuilder(migrationBuilder);
|
||||
var aspNetUsersEntityBuilder = new AspNetUsersEntityBuilder(migrationBuilder, ActiveDatabase);
|
||||
aspNetUsersEntityBuilder.Create();
|
||||
aspNetUsersEntityBuilder.AddIndex("EmailIndex", "NormalizedEmail", true);
|
||||
aspNetUsersEntityBuilder.AddIndex("UserNameIndex", "NormalizedUserName", true);
|
||||
|
||||
//Create AspNetUserClaims table
|
||||
var aspNetUserClaimsEntityBuilder = new AspNetUserClaimsEntityBuilder(migrationBuilder);
|
||||
var aspNetUserClaimsEntityBuilder = new AspNetUserClaimsEntityBuilder(migrationBuilder, ActiveDatabase);
|
||||
aspNetUserClaimsEntityBuilder.Create();
|
||||
aspNetUserClaimsEntityBuilder.AddIndex("IX_AspNetUserClaims_UserId", "UserId", true);
|
||||
|
||||
@ -96,67 +102,67 @@ namespace Oqtane.Migrations
|
||||
protected override void Down(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
//Drop AspNetUserClaims table
|
||||
var aspNetUserClaimsEntityBuilder = new AspNetUserClaimsEntityBuilder(migrationBuilder);
|
||||
var aspNetUserClaimsEntityBuilder = new AspNetUserClaimsEntityBuilder(migrationBuilder, ActiveDatabase);
|
||||
aspNetUserClaimsEntityBuilder.Drop();
|
||||
|
||||
//Drop AspNetUsers table
|
||||
var aspNetUsersEntityBuilder = new AspNetUsersEntityBuilder(migrationBuilder);
|
||||
var aspNetUsersEntityBuilder = new AspNetUsersEntityBuilder(migrationBuilder, ActiveDatabase);
|
||||
aspNetUsersEntityBuilder.Drop();
|
||||
|
||||
//Drop File table
|
||||
var fileEntityBuilder = new FileEntityBuilder(migrationBuilder);
|
||||
var fileEntityBuilder = new FileEntityBuilder(migrationBuilder, ActiveDatabase);
|
||||
fileEntityBuilder.Drop();
|
||||
|
||||
//Drop Folder table
|
||||
var folderEntityBuilder = new FolderEntityBuilder(migrationBuilder);
|
||||
var folderEntityBuilder = new FolderEntityBuilder(migrationBuilder, ActiveDatabase);
|
||||
folderEntityBuilder.Drop();
|
||||
|
||||
//Drop Notification table
|
||||
var notificationEntityBuilder = new NotificationEntityBuilder(migrationBuilder);
|
||||
var notificationEntityBuilder = new NotificationEntityBuilder(migrationBuilder, ActiveDatabase);
|
||||
notificationEntityBuilder.Drop();
|
||||
|
||||
//Drop Log table
|
||||
var logEntityBuilder = new LogEntityBuilder(migrationBuilder);
|
||||
var logEntityBuilder = new LogEntityBuilder(migrationBuilder, ActiveDatabase);
|
||||
logEntityBuilder.Drop();
|
||||
|
||||
//Drop Profile table
|
||||
var profileEntityBuilder = new ProfileEntityBuilder(migrationBuilder);
|
||||
var profileEntityBuilder = new ProfileEntityBuilder(migrationBuilder, ActiveDatabase);
|
||||
profileEntityBuilder.Drop();
|
||||
|
||||
//Drop Setting table
|
||||
var settingEntityBuilder = new SettingEntityBuilder(migrationBuilder);
|
||||
var settingEntityBuilder = new SettingEntityBuilder(migrationBuilder, ActiveDatabase);
|
||||
settingEntityBuilder.Drop();
|
||||
|
||||
//Drop Permission table
|
||||
var permissionEntityBuilder = new PermissionEntityBuilder(migrationBuilder);
|
||||
var permissionEntityBuilder = new PermissionEntityBuilder(migrationBuilder, ActiveDatabase);
|
||||
permissionEntityBuilder.Drop();
|
||||
|
||||
//Drop UserRole table
|
||||
var userRoleEntityBuilder = new UserRoleEntityBuilder(migrationBuilder);
|
||||
var userRoleEntityBuilder = new UserRoleEntityBuilder(migrationBuilder, ActiveDatabase);
|
||||
userRoleEntityBuilder.Drop();
|
||||
|
||||
//Drop Role table
|
||||
var roleEntityBuilder = new RoleEntityBuilder(migrationBuilder);
|
||||
var roleEntityBuilder = new RoleEntityBuilder(migrationBuilder, ActiveDatabase);
|
||||
roleEntityBuilder.Drop();
|
||||
|
||||
//Drop User table
|
||||
var userEntityBuilder = new UserEntityBuilder(migrationBuilder);
|
||||
var userEntityBuilder = new UserEntityBuilder(migrationBuilder, ActiveDatabase);
|
||||
userEntityBuilder.Drop();
|
||||
|
||||
//Drop PageModule table
|
||||
var pageModuleEntityBuilder = new PageModuleEntityBuilder(migrationBuilder);
|
||||
var pageModuleEntityBuilder = new PageModuleEntityBuilder(migrationBuilder, ActiveDatabase);
|
||||
pageModuleEntityBuilder.Drop();
|
||||
|
||||
//Drop Module table
|
||||
var moduleEntityBuilder = new ModuleEntityBuilder(migrationBuilder);
|
||||
var moduleEntityBuilder = new ModuleEntityBuilder(migrationBuilder, ActiveDatabase);
|
||||
moduleEntityBuilder.Drop();
|
||||
|
||||
//Drop Page table
|
||||
var pageEntityBuilder = new PageEntityBuilder(migrationBuilder);
|
||||
var pageEntityBuilder = new PageEntityBuilder(migrationBuilder, ActiveDatabase);
|
||||
pageEntityBuilder.Drop();
|
||||
|
||||
//Drop Site table
|
||||
var siteEntityBuilder = new SiteEntityBuilder(migrationBuilder);
|
||||
var siteEntityBuilder = new SiteEntityBuilder(migrationBuilder, ActiveDatabase);
|
||||
siteEntityBuilder.Drop();
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user