using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using TeleWave.Domain.Broadcast;

namespace TeleWave.Infrastructure.Persistence.Configurations;

public class ScheduleEntryConfiguration : IEntityTypeConfiguration<ScheduleEntry>
{
    public void Configure(EntityTypeBuilder<ScheduleEntry> builder)
    {
        // Основные запросы эфира/EPG — по каналу и времени.
        builder.HasIndex(x => new { x.ChannelId, x.StartsAtUtc });
        builder.HasIndex(x => new { x.ChannelId, x.EndsAtUtc });
        // Остывание спрашивает «когда этот элемент играл в последний раз» — по этому индексу.
        builder.HasIndex(x => new
        {
            x.ChannelId,
            x.ShowId,
            x.StartsAtUtc,
        });

        builder.Property(x => x.TraceJson).HasColumnType("jsonb");
    }
}
