using Microsoft.EntityFrameworkCore;
using DF.AppUsage.Api.Models;

namespace DF.AppUsage.Api.Data;

/// <summary>
/// Dieser Code sagt Entity Framework (dem Vermittler zwischen C# und der Datenbank), 
/// dass es eine Tabelle für unsere AppInsightEntry-Modelle geben soll.
/// </summary>
public class AppDbContext : DbContext
{
    public AppDbContext(DbContextOptions<AppDbContext> options) : base(options) { }

    // Das hier wird unsere Tabelle in der Datenbank
    public DbSet<AppInsightEntry> InsightEntries => Set<AppInsightEntry>();

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        // Wir erstellen einen kombinierten Index. 
        // Das macht die Suche nach "Was ist der letzte Zeitstempel für Typ X?" extrem schnell.
        modelBuilder.Entity<AppInsightEntry>()
            .HasIndex(b => new { b.Timestamp, b.InsightType });

        // NEU: Der Sicherheits-Index (verhindert Dubletten)
        modelBuilder.Entity<AppInsightEntry>()
            .HasIndex(e => e.ExternalId)
            .IsUnique();
    }
}