private async Task MigrateAsync( MyCatDatabaseHost node, string targetMigration = null, CancellationToken cancellationToken = default(CancellationToken)) { var connection = _connection.CreateNodeConnection(node); _logger.LogDebug(RelationalStrings.UsingConnection(connection.DbConnection.Database, connection.DbConnection.DataSource)); if (!await _historyRepository.ExistsAsync(connection, cancellationToken)) { if (!await _databaseCreator.ExistsAsync(connection, cancellationToken)) { await _databaseCreator.CreateAsync(node, cancellationToken); } var command = _rawSqlCommandBuilder.Build(_historyRepository.GetCreateScript()); await command.ExecuteNonQueryAsync(connection, cancellationToken : cancellationToken); } var commandLists = GetMigrationCommandLists( await _historyRepository.GetAppliedMigrationsAsync(connection, cancellationToken), targetMigration); foreach (var commandList in commandLists) { await _migrationCommandExecutor.ExecuteNonQueryAsync(commandList(), connection, cancellationToken); } }
private void Migrate(MyCatDatabaseHost node, string targetMigration = null) { var connection = _connection.CreateNodeConnection(node); _logger.LogDebug(RelationalStrings.UsingConnection(connection.DbConnection.Database, connection.DbConnection.DataSource)); if (!_historyRepository.Exists(connection)) { if (!_databaseCreator.Exists(connection)) { _databaseCreator.Create(node); } var command = _rawSqlCommandBuilder.Build(_historyRepository.GetCreateScript()); command.ExecuteNonQuery(connection); } var commandLists = GetMigrationCommandLists(_historyRepository.GetAppliedMigrations(connection), targetMigration); foreach (var commandList in commandLists) { _migrationCommandExecutor.ExecuteNonQuery(commandList(), connection); } connection.Close(); connection.Dispose(); }
public void Delete(MyCatDatabaseHost node) { ClearAllPools(); using (var masterConnection = _connection.CreateMasterConnection(node)) { MigrationCommandExecutor .ExecuteNonQuery(CreateDropCommands(), masterConnection); } }
public async Task DeleteAsync(MyCatDatabaseHost node, CancellationToken cancellationToken = default(CancellationToken)) { ClearAllPools(); using (var masterConnection = _connection.CreateMasterConnection(node)) { await MigrationCommandExecutor .ExecuteNonQueryAsync(CreateDropCommands(), masterConnection, cancellationToken); } }
public async Task CreateAsync(MyCatDatabaseHost node, CancellationToken cancellationToken = default(CancellationToken)) { using (var masterConnection = _connection.CreateMasterConnection(node)) { await MigrationCommandExecutor .ExecuteNonQueryAsync(CreateCreateOperations(node), masterConnection, cancellationToken); ClearPool(); } await ExistsAsync(_connection.CreateNodeConnection(node), retryOnNotExists : true, cancellationToken : cancellationToken); }
public void Create(MyCatDatabaseHost node) { using (var masterConnection = _connection.CreateMasterConnection(node)) { var cmd = CreateCreateOperations(node); MigrationCommandExecutor .ExecuteNonQuery(cmd, masterConnection); ClearPool(); } Exists(_connection.CreateNodeConnection(node), retryOnNotExists: false); }
public MyCatRelationalConnection CreateMasterConnection(MyCatDatabaseHost node) { var csb = new MyCatConnectionStringBuilder(ConnectionString) { Database = "mysql", UserID = node.Username, Server = node.Host, Port = node.Port, Password = node.Password, Pooling = false }; var optionsBuilder = new DbContextOptionsBuilder(); optionsBuilder.UseMyCat(csb.GetConnectionString(true)); return(new MyCatRelationalConnection(optionsBuilder.Options, Logger)); }
public async Task CreateTablesAsync(MyCatDatabaseHost node, CancellationToken cancellationToken = default(CancellationToken)) { await MigrationCommandExecutor.ExecuteNonQueryAsync(GetCreateTablesCommands(), _connection.CreateNodeConnection(node), cancellationToken); }
public void CreateTables(MyCatDatabaseHost node) { MigrationCommandExecutor.ExecuteNonQuery(GetCreateTablesCommands(), _connection.CreateNodeConnection(node)); }
public Task <bool> ExistsAsync(MyCatDatabaseHost node, CancellationToken cancellationToken = default(CancellationToken)) { return(ExistsAsync(_connection.CreateNodeConnection(node), cancellationToken)); }
public bool Exists(MyCatDatabaseHost node) { return(Exists(_connection.CreateNodeConnection(node), false)); }
public IReadOnlyList <MigrationCommand> CreateCreateOperations(MyCatDatabaseHost node) => _migrationsSqlGenerator.Generate(new[] { new MyCatCreateDatabaseOperation { Name = node.Database } });