using System;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Design;
using PolyTrader.Core.Configuration;

namespace PolyTrader.Modules.ResolutionFarming.Persistence.Ef
{
    /// <summary>
    /// Design-Time-Factory für EF-Tooling. Nutzt die fest gepinnte Server-Version
    /// (<see cref="DatabaseServerVersion"/>) statt <c>ServerVersion.AutoDetect</c>, damit
    /// Migrations-Scaffolding OHNE DB-Verbindung funktioniert (kein Zugriff auf die produktive DB
    /// beim Generieren). Connection-String rein nominell über POLYTRADER_MYSQL; es wird beim
    /// bloßen Scaffolding keine Verbindung geöffnet.
    /// </summary>
    public class ResolutionFarmingDbContextFactory : IDesignTimeDbContextFactory<ResolutionFarmingDbContext>
    {
        public ResolutionFarmingDbContext CreateDbContext(string[] args)
        {
            var conn = Environment.GetEnvironmentVariable("POLYTRADER_MYSQL")
                ?? "Server=localhost;Port=3306;Database=polytrader;User ID=root;Password=;";

            var options = new DbContextOptionsBuilder<ResolutionFarmingDbContext>()
                .UseMySql(conn, DatabaseServerVersion.Value)
                .Options;

            return new ResolutionFarmingDbContext(options);
        }
    }
}
