using ClaudeDo.Data.Models;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;

namespace ClaudeDo.Data.Configuration;

public class TaskAttachmentEntityConfiguration : IEntityTypeConfiguration<TaskAttachmentEntity>
{
    public void Configure(EntityTypeBuilder<TaskAttachmentEntity> builder)
    {
        builder.ToTable("task_attachments");

        builder.HasKey(a => a.Id);
        builder.Property(a => a.Id).HasColumnName("id");
        builder.Property(a => a.TaskId).HasColumnName("task_id").IsRequired();
        builder.Property(a => a.FileName).HasColumnName("file_name").IsRequired();
        builder.Property(a => a.ByteSize).HasColumnName("byte_size").IsRequired();
        builder.Property(a => a.CreatedAt).HasColumnName("created_at").IsRequired();

        builder.HasOne(a => a.Task)
            .WithMany()
            .HasForeignKey(a => a.TaskId)
            .OnDelete(DeleteBehavior.Cascade);

        builder.HasIndex(a => a.TaskId).HasDatabaseName("idx_task_attachments_task_id");
    }
}
