using System.Data.Entity;
using Abp.BackgroundJobs;
using Abp.EntityHistory;
using Abp.Notifications;
using IwbZero.Authorization.Base.Permissions;
using IwbZero.Authorization.Base.Roles;
using IwbZero.Authorization.Base.SystemInfo;
using IwbZero.Authorization.Base.Users;
using IwbZero.Authorization.Roles;
using IwbZero.Authorization.Users;
using IwbZero.MultiTenancy;
namespace IwbZero.EntityFramework
{
///
/// Extension methods for .
///
public static class IwbZeroDbModelBuilderExtensions
{
///
/// Changes prefix for ABP tables (which is "Abp" by default).
/// Can be null/empty string to clear the prefix.
///
/// The type of the tenant entity.
/// The type of the role entity.
/// The type of the user entity.
/// Model builder.
/// Table prefix, or null to clear prefix.
/// Schema name
public static void ChangeAbpTablePrefix(this DbModelBuilder modelBuilder, string prefix, string schemaName = null)
where TTenant : IwbTenant
where TRole : IwbSysRole
where TUser : IwbSysUser
{
prefix = prefix ?? "";
SetTableName(modelBuilder, prefix + "AuditLogs", schemaName);
SetTableName(modelBuilder, prefix + "BackgroundJobs", schemaName);
//SetTableName(modelBuilder, prefix + "Editions", schemaName);
SetTableName(modelBuilder, prefix + "EntityChanges", schemaName);
SetTableName(modelBuilder, prefix + "EntityChangeSets", schemaName);
SetTableName(modelBuilder, prefix + "EntityPropertyChanges", schemaName);
//SetTableName(modelBuilder, prefix + "Features", schemaName);
//SetTableName(modelBuilder, prefix + "Features", schemaName);
//SetTableName(modelBuilder, prefix + "Features", schemaName);
//SetTableName(modelBuilder, prefix + "Languages", schemaName);
//SetTableName(modelBuilder, prefix + "LanguageTexts", schemaName);
SetTableName(modelBuilder, prefix + "Notifications", schemaName);
SetTableName(modelBuilder, prefix + "NotificationSubscriptions", schemaName);
//SetTableName(modelBuilder, prefix + "OrganizationUnits", schemaName);
SetTableName(modelBuilder, prefix + "Permissions", schemaName);
SetTableName(modelBuilder, prefix + "Roles", schemaName);
SetTableName(modelBuilder, prefix + "Settings", schemaName);
SetTableName(modelBuilder, prefix + "Tenants", schemaName);
SetTableName(modelBuilder, prefix + "UserLogins", schemaName);
SetTableName(modelBuilder, prefix + "UserLoginAttempts", schemaName);
SetTableName(modelBuilder, prefix + "TenantNotifications", schemaName);
SetTableName(modelBuilder, prefix + "UserNotifications", schemaName);
//SetTableName(modelBuilder, prefix + "UserOrganizationUnits", schemaName);
//SetTableName(modelBuilder, prefix + "OrganizationUnitRoles", schemaName);
SetTableName(modelBuilder, prefix + "UserRoles", schemaName);
SetTableName(modelBuilder, prefix + "Users", schemaName);
SetTableName(modelBuilder, prefix + "UserAccounts", schemaName);
SetTableName(modelBuilder, prefix + "UserClaims", schemaName);
SetTableName(modelBuilder, prefix + "RoleClaims", schemaName);
}
private static void SetTableName(DbModelBuilder modelBuilder, string tableName, string schemaName)
where TEntity : class
{
if (schemaName == null)
{
modelBuilder.Entity().ToTable(tableName);
}
else
{
modelBuilder.Entity().ToTable(tableName, schemaName);
}
}
}
}