using Domain.Entities.Director; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; namespace Infrastructure.Persistence.Configurations.Director { public sealed class AdminAccessLogConfiguration : IEntityTypeConfiguration { public void Configure(EntityTypeBuilder builder) { builder.HasIndex(x => x.UserID); builder.HasIndex(x => x.CreatedAt); builder.ToTable(nameof(AdminAccessLog), x => x.HasComment("관리자 접근 기록")); builder.HasKey(x => x.ID); builder.Property(x => x.ID).ValueGeneratedOnAdd().HasComment("PK"); builder.Property(x => x.UserID).HasMaxLength(64).IsRequired().HasComment("관리자 사용자 ID"); builder.Property(x => x.UserName).HasMaxLength(100).HasComment("관리자 사용자 이름"); builder.Property(x => x.Method).HasMaxLength(10).IsRequired().HasComment("HTTP Method"); builder.Property(x => x.Path).HasMaxLength(2048).IsRequired().HasComment("요청 경로"); builder.Property(x => x.QueryString).HasMaxLength(2048).HasComment("쿼리 스트링"); builder.Property(x => x.StatusCode).IsRequired().HasComment("응답 상태 코드"); builder.Property(x => x.ElapsedMs).IsRequired().HasComment("처리 시간 (밀리초)"); builder.Property(x => x.MenuName).HasMaxLength(200).HasComment("메뉴 이름"); builder.Property(x => x.IpAddress).HasMaxLength(45).HasComment("IP 주소"); builder.Property(x => x.UserAgent).HasMaxLength(512).HasComment("User Agent"); builder.Property(x => x.CreatedAt).IsRequired().HasComment("생성 일시"); } } }