MES-ETL/Mesdb.Cli/Schema/DB.cs

44 lines
1.1 KiB
C#

using MesETL.Shared.Helper;
using MySqlConnector;
using Serilog;
namespace Mesdb.Cli.Schema;
public class DB
{
public required string ConnectionString { get; init; }
public required IReadOnlyList<Database> Databases { get; init; }
public static DB Create(string connStr, IEnumerable<string> dbNames)
{
var databases = new List<Database>();
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()
{
}
}