Пример #1
0
        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));
        }
Пример #2
0
        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);
            }
        }