using GymLogAI.Core.Entities; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; namespace GymLogAI.Persistence.Configurations; public sealed class TelegramMessageConfiguration : IEntityTypeConfiguration { public void Configure(EntityTypeBuilder builder) { builder.ToTable("telegram_messages"); builder.HasKey(x => x.Id); builder.Property(x => x.Id).ValueGeneratedNever(); builder.Property(x => x.Text).HasMaxLength(4000).IsRequired(); builder.Property(x => x.ParsingError).HasMaxLength(2000); builder.HasOne(x => x.User) .WithMany(x => x.TelegramMessages) .HasForeignKey(x => x.UserId) .OnDelete(DeleteBehavior.Cascade); builder.HasOne(x => x.Workout) .WithOne(x => x.SourceTelegramMessage) .HasForeignKey(x => x.SourceTelegramMessageId) .IsRequired(false) .OnDelete(DeleteBehavior.SetNull); builder.HasIndex(x => new { x.UserId, x.ParsingStatus }); builder.HasIndex(x => new { x.TelegramChatId, x.TelegramMessageId }).IsUnique(); } }