44 lines
1.1 KiB
C#
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()
|
|
{
|
|
}
|
|
} |