public static ICommander <T> UseMySql <T>(string settingsFile = "Syrx.MySql.Integration.Tests.json") { var settings = JsonConvert.DeserializeObject <DatabaseCommanderSettings>(File.ReadAllText(settingsFile)); var reader = new DatabaseCommandReader(settings); var connector = new MySqlDatabaseConnector(settings); return(new DatabaseCommander <T>(reader, connector)); }
public async Task Run(IServiceProvider serviceProvider) { var logger = serviceProvider.GetRequiredService <ILogging>(); var customMessage = $"{{3}}{Environment.NewLine}"; logger.SetMinimumLevel(LogType.Trace); logger.SetCustomMessage(LogType.Trace, customMessage); logger.SetCustomMessage(LogType.Debug, customMessage); logger.SetCustomMessage(LogType.Information, customMessage); logger.SetCustomMessage(LogType.Warning, customMessage); logger.SetCustomMessage(LogType.Error, customMessage); logger.SetCustomMessage(LogType.Critical, customMessage); try { var arguments = serviceProvider.GetRequiredService <ApplicationArguments>(); logger.Log($"Trying to connect to '{arguments.Host}' to read database '{arguments.Database}' with user '{arguments.UserName}':", LogType.Information); var connection = new MySqlDatabaseConnector($"SERVER={arguments.Host};DATABASE={arguments.Database};UID={arguments.UserName};PASSWORD={arguments.Pepe};Allow User Variables=True;POOLING=true;Connection Timeout=120;Default Command Timeout=120"); await connection.OpenAsync(); if (!connection.IsOpen()) { logger.Log("Couldn't stablish a connection with the server.", LogType.Error); return; } var schemaProvider = connection.GetSchemaProvider(); var tables = await schemaProvider.GetTablesAsync(arguments.Database); var views = await schemaProvider.GetViewsAsync(arguments.Database); var procedures = await schemaProvider.GetStoredProceduresAsync(arguments.Database); foreach (var table in tables) { await PrintTablesAsync(logger, arguments.Database, schemaProvider, table); } foreach (var view in views) { await PrintViewsAsync(logger, arguments.Database, schemaProvider, view); } foreach (var procedure in procedures) { await PrintProceduresAsync(logger, arguments.Database, schemaProvider, procedure); } } catch (Exception e) { logger.Log(e.Message, LogType.Error); } }