using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Monitoring.Domain.Entities.AlertRule;
namespace Monitoring.Infrastructure.Persistence.Configurations;
/// 告警规则表映射(id + 外键索引列 + json_data + 审计)。
public class AlertRuleConfiguration : IEntityTypeConfiguration
{
public void Configure(EntityTypeBuilder builder)
{
builder.ToTable("b_alert_rules");
builder.HasKey(e => e.Id);
builder.Property(e => e.Id).ValueGeneratedNever().HasComment("规则ID");
builder.Property(e => e.ExternalSystemId).HasComment("绑定的外部系统ID");
builder.Property(e => e.JsonData).HasColumnType("jsonb").IsRequired().HasComment("业务数据: 名称/指标/阈值/运算符/严重级别/启用/冷却");
// 审计列
builder.Property(e => e.CreatedBy).HasMaxLength(100).HasComment("创建人");
builder.Property(e => e.CreatedAt).HasComment("创建时间");
builder.Property(e => e.UpdatedBy).HasMaxLength(100).HasComment("更新人");
builder.Property(e => e.UpdatedAt).HasComment("更新时间");
builder.Property(e => e.IsDeleted).HasDefaultValue(false).HasComment("是否已软删除");
builder.Property(e => e.OperatorIP).HasMaxLength(50).HasComment("操作者IP");
builder.HasIndex(e => e.ExternalSystemId);
}
}