using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Options;
using Umbraco.Cms.Core.Configuration.Models;
using Umbraco.Extensions;
namespace Umbraco.Cms.Core.Configuration;
///
/// Configures ConnectionStrings.
///
public class ConfigureConnectionStrings : IConfigureNamedOptions
{
private readonly IConfiguration _configuration;
///
/// Initializes a new instance of the class.
///
public ConfigureConnectionStrings(IConfiguration configuration) => _configuration = configuration;
///
public void Configure(ConnectionStrings options) => Configure(Constants.System.UmbracoConnectionName, options);
///
public void Configure(string name, ConnectionStrings options)
{
if (name == Options.DefaultName)
{
name = Constants.System.UmbracoConnectionName;
}
if (options.IsConnectionStringConfigured())
{
return;
}
options.Name = name;
options.ConnectionString = _configuration.GetConnectionString(name);
options.ProviderName = _configuration.GetConnectionString($"{name}{ConnectionStrings.ProviderNamePostfix}") ?? ConnectionStrings.DefaultProviderName;
}
}