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; public class SQLDbConnectionFactory : IDbConnectionFactory { private readonly AppSettings _AppSettings; public SQLDbConnectionFactory(AppSettings appSettings) => _AppSettings = appSettings; public SQLDbConnectionFactory(string json) { AppSettings appSettings = System.Text.Json.JsonSerializer.Deserialize(json); _AppSettings = appSettings; } public DbConnection GetDbConnection() { 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; } }