using Umbraco.Cms.Core.Install.Models; namespace Umbraco.Cms.Infrastructure.Persistence; /// /// Extension methods for . /// public static class DatabaseProviderMetadataExtensions { /// /// Gets the available database provider metadata. /// /// The database provider metadata. /// If set to true only returns providers that support quick install. /// /// The available database provider metadata. /// public static IEnumerable GetAvailable(this IEnumerable databaseProviderMetadata, bool onlyQuickInstall = false) => databaseProviderMetadata.Where(x => (!onlyQuickInstall || x.SupportsQuickInstall) && x.IsAvailable).OrderBy(x => x.SortOrder); /// /// Determines whether a database can be created for the specified provider name while ignoring the value of . /// /// The database provider metadata. /// The name of the provider. /// /// true if a database can be created for the specified provider name; otherwise, false. /// public static bool CanForceCreateDatabase(this IEnumerable databaseProviderMetadata, string? providerName) => databaseProviderMetadata.FirstOrDefault(x => string.Equals(x.ProviderName, providerName, StringComparison.InvariantCultureIgnoreCase))?.ForceCreateDatabase == true; /// /// Generates the connection string. /// /// The database provider metadata. /// The name of the database, uses the default database name when null. /// The server. /// The login. /// The password. /// Indicates whether integrated authentication should be used (when supported by the provider). /// /// The generated connection string. /// public static string? GenerateConnectionString(this IDatabaseProviderMetadata databaseProviderMetadata, string? databaseName = null, string? server = null, string? login = null, string? password = null, bool? integratedAuth = null) => databaseProviderMetadata.GenerateConnectionString(new DatabaseModel() { DatabaseProviderMetadataId = databaseProviderMetadata.Id, ProviderName = databaseProviderMetadata.ProviderName, DatabaseName = databaseName ?? databaseProviderMetadata.DefaultDatabaseName, Server = server ?? string.Empty, Login = login ?? string.Empty, Password = password ?? string.Empty, IntegratedAuth = integratedAuth == true && databaseProviderMetadata.SupportsIntegratedAuthentication }); }