using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; namespace Nuuru.Server.Data.EntityConfigurations { public class PostVoteConfiguration : IEntityTypeConfiguration { public void Configure(EntityTypeBuilder builder) { builder.HasKey(pv => new { pv.PostId, pv.UserId }); builder.HasOne(pv => pv.Post) .WithMany(p => p.Votes) .HasForeignKey(pv => pv.PostId) .OnDelete(DeleteBehavior.Cascade); // Cascade delete: when user is deleted, remove their votes builder.HasOne(pv => pv.User) .WithMany(u => u.BooruPostVotes) .HasForeignKey(pv => pv.UserId) .OnDelete(DeleteBehavior.Cascade); builder.HasIndex(pv => pv.UserId); builder.HasIndex(pv => pv.CreatedAt); // Index for time-filtered leaderboard queries (join with Post for UploaderId) builder.HasIndex(pv => new { pv.PostId, pv.CreatedAt }); } } }