using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Options;
using Umbraco.Cms.Core.Configuration.Models;
using Umbraco.Extensions;
namespace Umbraco.Cms.Core.Configuration;
///
/// Configures the named option.
///
public class ConfigureConnectionStrings : IConfigureNamedOptions
{
private readonly IConfiguration _configuration;
///
/// Initializes a new instance of the class.
///
/// The configuration.
public ConfigureConnectionStrings(IConfiguration configuration)
=> _configuration = configuration;
///
public void Configure(ConnectionStrings options) => Configure(Options.DefaultName, options);
///
public void Configure(string? name, ConnectionStrings options)
{
if (name is null)
{
throw new InvalidOperationException("The name of the option instance is required.");
}
// Default to using UmbracoConnectionName
if (name == Options.DefaultName)
{
name = Constants.System.UmbracoConnectionName;
}
if (options.IsConnectionStringConfigured())
{
return;
}
options.ConnectionString = _configuration.GetUmbracoConnectionString(name, out string? providerName);
options.ProviderName = providerName ??
ConnectionStrings.DefaultProviderName;
}
}