using Microsoft.EntityFrameworkCore;

namespace CompatBot.Database;

internal static class PrimaryKeyConvention
{
    public static void ConfigureDefaultPkConvention(this ModelBuilder modelBuilder, string keyProperty = "Id")
    {
        if (string.IsNullOrEmpty(keyProperty))
            throw new ArgumentException("Key property name is mandatory", nameof(keyProperty));

        foreach (var entity in modelBuilder.Model.GetEntityTypes())
        {
            var pk = entity.GetKeys().FirstOrDefault(k => k.IsPrimaryKey());
            pk?.SetName(keyProperty);
        }
    }

    public static void ConfigureNoPkConvention(this ModelBuilder modelBuilder)
    {
        foreach (var entity in modelBuilder.Model.GetEntityTypes())
        {
            var pk = entity.GetKeys().FirstOrDefault(k => k.IsPrimaryKey());
            if (pk != null)
                entity.RemoveKey(pk.Properties);
        }
    }
}