using Domain.Entities; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; namespace Adapters.Driven.Persistence.Configurations; public class UserConfiguration : IEntityTypeConfiguration { public void Configure(EntityTypeBuilder builder) { builder.ToTable("Users"); builder.HasKey(u => u.Id); builder.Property(u => u.Username) .IsRequired() .HasMaxLength(50); builder.HasIndex(u => u.Username) .IsUnique(); builder.Property(u => u.PasswordHash) .IsRequired() .HasMaxLength(256); builder.Property(u => u.RecoveryCodeHash) .IsRequired() .HasMaxLength(256); builder.Property(u => u.Role) .IsRequired() .HasMaxLength(20); builder.Property(u => u.CreatedAt) .IsRequired(); builder.HasOne(u => u.Student) .WithMany() .HasForeignKey(u => u.StudentId) .OnDelete(DeleteBehavior.SetNull); } }