using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; using Nuuru.Server.Models.Booru; namespace Nuuru.Server.Data.EntityConfigurations { public class TagAliasConfiguration : IEntityTypeConfiguration { public void Configure(EntityTypeBuilder builder) { builder.HasKey(a => a.Id); // Each alias tag can only point to one target (unique on source) builder.HasIndex(a => a.AliasTagId).IsUnique(); // Index for looking up aliases by target builder.HasIndex(a => a.TargetTagId); // Index for filtering by active status and creation date builder.HasIndex(a => a.IsActive); builder.HasIndex(a => a.CreatedAt); // Relationships builder.HasOne(a => a.AliasTag) .WithMany(t => t.AliasesAsSource) .HasForeignKey(a => a.AliasTagId) .OnDelete(DeleteBehavior.Cascade); builder.HasOne(a => a.TargetTag) .WithMany(t => t.AliasesAsTarget) .HasForeignKey(a => a.TargetTagId) .OnDelete(DeleteBehavior.Cascade); builder.HasOne(a => a.CreatedBy) .WithMany() .HasForeignKey(a => a.CreatedByUserId) .OnDelete(DeleteBehavior.SetNull); } } }