using OI.Metrology.Server.Models; using OI.Metrology.Shared.Repositories; using System.Data.Common; using System.Data.SqlClient; #pragma warning disable CS8600, CS8602, CS8603, CS8604, CS8625 namespace OI.Metrology.Server.Services; public class SQLDbConnectionFactory : IDbConnectionFactory { private readonly AppSettings _AppSettings; public SQLDbConnectionFactory(AppSettings appSettings) => _AppSettings = appSettings; public DbConnection GetDbConnection(bool? useOI2Sql) { DbProviderFactories.RegisterFactory( typeof(SqlConnection).Namespace, SqlClientFactory.Instance); if (string.IsNullOrEmpty(_AppSettings.ConnectionString)) throw new Exception("Connection string is missing"); if (string.IsNullOrEmpty(_AppSettings.OI2SqlConnectionString)) throw new Exception("Connection string is missing"); DbConnection dbConnection = SqlClientFactory.Instance.CreateConnection(); dbConnection.ConnectionString = useOI2Sql is not null && useOI2Sql.Value ? _AppSettings.OI2SqlConnectionString : _AppSettings.ConnectionString; dbConnection.Open(); return dbConnection; } }