// // Copyright (c) Microsoft. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. // #nullable disable using System.Data.Common; using Microsoft.SqlTools.ServiceLayer.Connection.ReliableConnection; using Microsoft.Data.SqlClient; namespace Microsoft.SqlTools.ServiceLayer.Connection { /// /// Factory class to create SqlClientConnections /// The purpose of the factory is to make it easier to mock out the database /// in 'offline' unit test scenarios. /// public class SqlConnectionFactory : ISqlConnectionFactory { /// /// Creates a new SqlConnection object /// /// Optional retry provider to handle errors in a special way public DbConnection CreateSqlConnection(string connectionString, string azureAccountToken, SqlRetryLogicBaseProvider retryProvider = null) { RetryPolicy connectionRetryPolicy = RetryPolicyFactory.CreateDefaultConnectionRetryPolicy(); RetryPolicy commandRetryPolicy = RetryPolicyFactory.CreateDefaultConnectionRetryPolicy(); return new ReliableSqlConnection(connectionString, connectionRetryPolicy, commandRetryPolicy, azureAccountToken, retryProvider); } } }