academia/src/backend/Adapters/Driven/Persistence/Configurations/UserConfiguration.cs

43 lines
1.1 KiB
C#
Raw Normal View History

using Domain.Entities;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
namespace Adapters.Driven.Persistence.Configurations;
public class UserConfiguration : IEntityTypeConfiguration<User>
{
public void Configure(EntityTypeBuilder<User> 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);
}
}