using Abp.BackgroundJobs;
using Abp.Notifications;
using Abp.Webhooks;
using Microsoft.EntityFrameworkCore;
using VberZero.BaseSystem;
using VberZero.BaseSystem.MultiTenancy;
using VberZero.BaseSystem.Organizations;
using VberZero.BaseSystem.Roles;
using VberZero.BaseSystem.Users;
namespace VberZero.EntityFramework;
///
/// Extension methods for .
///
public static class VzDbModelBuilderExtensions
{
///
/// 更改 系统 表的前缀(默认为“Sys_”)
/// 可以为空/空字符串来清除前缀。
///
/// Model builder.
/// Table prefix, or null to clear prefix.
/// Schema name
public static void ChangeTablePrefix(this ModelBuilder modelBuilder, string prefix = "Sys_", string schemaName = null)
{
prefix = prefix ?? "";
SetTableName(modelBuilder, prefix + "AuditLogs", schemaName);
SetTableName(modelBuilder, prefix + "BackgroundJobs", schemaName);
SetTableName(modelBuilder, prefix + "Notifications", schemaName);
SetTableName(modelBuilder, prefix + "NotificationSubscriptions", schemaName);
SetTableName(modelBuilder, prefix + "OrganizationUnits", schemaName);
SetTableName(modelBuilder, prefix + "Permissions", schemaName);
SetTableName(modelBuilder, prefix + "Permissions", 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);
SetTableName(modelBuilder, prefix + "UserTokens", schemaName);
SetTableName(modelBuilder, prefix + "WebhookEvents", schemaName);
SetTableName(modelBuilder, prefix + "WebhookSubscriptions", schemaName);
SetTableName(modelBuilder, prefix + "WebhookSendAttempts", schemaName);
SetTableName(modelBuilder, prefix + "Functions", schemaName);
SetTableName(modelBuilder, prefix + "Attaches", schemaName);
SetTableName(modelBuilder, prefix + "AutoCompleteQueries", schemaName);
SetTableName(modelBuilder, prefix + "Calendars", schemaName);
SetTableName(modelBuilder, prefix + "Helps", schemaName);
SetTableName(modelBuilder, prefix + "States", schemaName);
//SetTableName(modelBuilder, prefix + "DynamicProperties", schemaName);
//SetTableName(modelBuilder, prefix + "DynamicPropertyValues", schemaName);
//SetTableName(modelBuilder, prefix + "DynamicEntityProperties", schemaName);
//SetTableName(modelBuilder, prefix + "DynamicEntityPropertyValues", schemaName);
//SetTableName(modelBuilder, prefix + "EntityChanges", schemaName);
//SetTableName(modelBuilder, prefix + "EntityChangeSets", schemaName);
//SetTableName(modelBuilder, prefix + "EntityPropertyChanges", schemaName);
//SetTableName(modelBuilder, prefix + "Editions", 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);
}
internal static void SetTableName(this ModelBuilder modelBuilder, string tableName, string schemaName)
where TEntity : class
{
if (schemaName == null)
{
modelBuilder.Entity().ToTable(tableName);
}
else
{
modelBuilder.Entity().ToTable(tableName, schemaName);
}
}
}