using MesETL.Shared.Helper; using MySqlConnector; using Serilog; namespace Mesdb.Cli.Schema; public class DB { public required string ConnectionString { get; init; } public required IReadOnlyList Databases { get; init; } public static DB Create(string connStr, IEnumerable dbNames) { var databases = new List(); foreach (var dbName in dbNames) { var dbConnStr = new MySqlConnectionStringBuilder(connStr) { Database = dbName }.ConnectionString; try { _ = DatabaseHelper.NonQueryAsync(dbConnStr, "SHOW DATABASES;").Result; databases.Add(new Database(dbName, dbConnStr)); } catch (Exception e) { Log.Logger.Fatal(e, "无法连接到数据库: {DbName} ", dbName); throw; } } return new DB { ConnectionString = connStr, Databases = databases }; } private DB() { } }