SPMS_API/SPMS.Infrastructure/Persistence/Configurations/WebhookLogConfiguration.cs
SEAN 8b6fd84b98 feat: Domain Enum 및 에러 코드 상수 정의 (#10)
- 12개 Enum 추가 (Platform, ServiceStatus, SubTier, AdminRole, DeviceStatus, MessageStatus, PushResult, PaymentStatus, TargetType, LinkType, WebhookEvent, WebhookStatus)
- ErrorCodes 상수 클래스 추가 (Error_Codes.md 기반 3자리 코드)
- Entity byte 필드를 Enum 타입으로 변경 (Service, Admin, Device, PushSendLog, WebhookLog, Payment)
- WebhookLog.EventType 컬럼 타입 변경 (varchar→tinyint) 마이그레이션 적용
2026-02-09 13:31:50 +09:00

33 lines
1.2 KiB
C#

using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using SPMS.Domain.Entities;
namespace SPMS.Infrastructure.Persistence.Configurations;
public class WebhookLogConfiguration : IEntityTypeConfiguration<WebhookLog>
{
public void Configure(EntityTypeBuilder<WebhookLog> builder)
{
builder.ToTable("WebhookLog");
builder.HasKey(e => e.Id);
builder.Property(e => e.Id).ValueGeneratedOnAdd();
builder.Property(e => e.ServiceId).IsRequired();
builder.Property(e => e.WebhookUrl).HasMaxLength(500).IsRequired();
builder.Property(e => e.EventType).HasColumnType("tinyint").IsRequired();
builder.Property(e => e.Payload).HasColumnType("json").IsRequired();
builder.Property(e => e.Status).HasColumnType("tinyint").IsRequired();
builder.Property(e => e.ResponseCode);
builder.Property(e => e.ResponseBody).HasColumnType("text");
builder.Property(e => e.SentAt).IsRequired();
builder.HasOne(e => e.Service)
.WithMany()
.HasForeignKey(e => e.ServiceId)
.OnDelete(DeleteBehavior.Restrict);
builder.HasIndex(e => new { e.ServiceId, e.SentAt });
}
}