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; } }