using Baya.Domain.Entities.Identity; using Baya.Domain.Entities.User; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; namespace Baya.Infrastructure.Persistence.Configuration.IdentityConfig; internal sealed class NurseProfileConfig : IEntityTypeConfiguration { public void Configure(EntityTypeBuilder builder) { builder.ToTable("NurseProfiles", "usr"); builder.Property(p => p.Bio).HasMaxLength(2000); builder.Property(p => p.EducationLevel).HasMaxLength(100); builder.Property(p => p.EducationField).HasMaxLength(150); builder.Property(p => p.IsVerified).HasDefaultValue(false); builder.Property(p => p.IsAcceptingBookings).HasDefaultValue(false); // Read-only quality aggregates — default 0, recomputed by reviews/bookings phases. builder.Property(p => p.AverageRating).HasPrecision(3, 2).HasDefaultValue(0m); builder.Property(p => p.TotalReviews).HasDefaultValue(0); builder.Property(p => p.TotalCompletedBookings).HasDefaultValue(0); // 1:1 with the owning user. builder.HasIndex(p => p.UserId).IsUnique(); builder.HasOne(p => p.User) .WithOne() .HasForeignKey(p => p.UserId) .IsRequired(); builder.HasQueryFilter(p => p.DeletedAt == null); } }