private string TestExecuteDataMigrationScripts(string[] scriptsDescriptions, out List <string> log, out List <string> sqlLog, bool skipScriptsWithWrongOrder = false) { log = new List <string>(); var sqlExecuterLog = new SqlExecuterLog(); sqlLog = sqlExecuterLog; using (var container = new RhetosTestContainer()) { container.InitializeSession += builder => { builder.RegisterInstance(sqlExecuterLog).ExternallyOwned(); builder.RegisterDecorator <SqlExecuterMonitor, ISqlExecuter>(); }; container.AddLogMonitor(log); var sqlExecuter = container.Resolve <ISqlExecuter>(); sqlExecuter.ExecuteSql("DELETE FROM Rhetos.DataMigrationScript"); var sqlBatches = container.Resolve <SqlTransactionBatches>(); int deployment = 0; foreach (string scriptsDescription in scriptsDescriptions) { sqlExecuter.ExecuteSql($"--DBUpdate: {++deployment}"); var dbUpdateOptions = new DbUpdateOptions() { DataMigrationSkipScriptsWithWrongOrder = skipScriptsWithWrongOrder }; var dataMigration = new DataMigrationScriptsExecuter(sqlExecuter, container.Resolve <ILogProvider>(), ParseDataMigrationScriptsFromScriptsDescription(scriptsDescription), dbUpdateOptions, sqlBatches); dataMigration.Execute(); } var report = new List <string>(); sqlExecuter.ExecuteReader("SELECT Path, Active FROM Rhetos.DataMigrationScript ORDER BY OrderExecuted", reader => report.Add(reader.GetString(0).Replace(".sql", "") + (reader.GetBoolean(1) ? "" : "-"))); return(string.Join(", ", report)); } }
private string TestExecuteDataMigrationScripts(string[] scriptsDescriptions, out List <string> log, out List <string> sqlLog, bool skipScriptsWithWrongOrder = false) { var systemLog = new List <string>(); log = systemLog; var sqlExecuterLog = new SqlExecuterLog(); sqlLog = sqlExecuterLog; using (var scope = TestScope.Create(builder => builder .ConfigureLogMonitor(systemLog) .ConfigureSqlExecuterMonitor(sqlExecuterLog))) { var sqlExecuter = scope.Resolve <ISqlExecuter>(); sqlExecuter.ExecuteSql("DELETE FROM Rhetos.DataMigrationScript"); var sqlBatches = scope.Resolve <SqlTransactionBatches>(); int deployment = 0; foreach (string scriptsDescription in scriptsDescriptions) { sqlExecuter.ExecuteSql($"--DBUpdate: {++deployment}"); var dbUpdateOptions = new DbUpdateOptions() { DataMigrationSkipScriptsWithWrongOrder = skipScriptsWithWrongOrder }; var dataMigration = new DataMigrationScriptsExecuter(sqlExecuter, scope.Resolve <ILogProvider>(), ParseDataMigrationScriptsFromScriptsDescription(scriptsDescription), dbUpdateOptions, sqlBatches); dataMigration.Execute(); } var report = new List <string>(); sqlExecuter.ExecuteReader("SELECT Path, Active FROM Rhetos.DataMigrationScript ORDER BY OrderExecuted", reader => report.Add(reader.GetString(0).Replace(".sql", "") + (reader.GetBoolean(1) ? "" : "-"))); return(string.Join(", ", report)); } }