using OI.Metrology.Archive.Models;
using OI.Metrology.Shared.Repositories;
using System;
using System.Data.Common;
using System.Data.SqlClient;

namespace OI.Metrology.Archive.Repositories;

#nullable disable

public class SQLDbConnectionFactory : IDbConnectionFactory
{
    private readonly AppSettings _AppSettings;

    public SQLDbConnectionFactory(AppSettings appSettings) => _AppSettings = appSettings;

    public DbConnection GetDbConnection(bool? useOI2Sql = null)
    {
        DbProviderFactories.RegisterFactory(
            typeof(SqlConnection).Namespace,
            SqlClientFactory.Instance);

        if (string.IsNullOrEmpty(_AppSettings.ConnectionString))
            throw new Exception("Connection string is missing");

        DbConnection c = SqlClientFactory.Instance.CreateConnection();
        c.ConnectionString = _AppSettings.ConnectionString;
        c.Open();
        return c;
    }
}