using GymLogAI.Core.Entities; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; namespace GymLogAI.Persistence.Configurations; public sealed class WorkoutConfiguration : IEntityTypeConfiguration { public void Configure(EntityTypeBuilder builder) { builder.ToTable("workouts"); builder.HasKey(x => x.Id); builder.Property(x => x.Id).ValueGeneratedNever(); builder.Property(x => x.Title).HasMaxLength(256); builder.Property(x => x.Notes).HasMaxLength(4000); builder.HasOne(x => x.User) .WithMany(x => x.Workouts) .HasForeignKey(x => x.UserId) .OnDelete(DeleteBehavior.Cascade); builder.HasMany(x => x.WorkoutExercises) .WithOne(x => x.Workout) .HasForeignKey(x => x.WorkoutId) .OnDelete(DeleteBehavior.Cascade); builder.HasIndex(x => new { x.UserId, x.PerformedAtUtc }); } }