private void UpdateSelf() { var migrator = new SchemaMigrationExecutor(_runner, GetMigratorTasks(), SchemaName); using (var t = _db.BeginTransaction()) { if (!_db.DatabaseTools().TableExists(TableName)) { migrator.InstallSchema(); AppendVersion(SchemaName, migrator.LatestVersionAvailable); } else { var latest = GetInstalledVersion(SchemaName); if (latest.IsNullOrEmpty()) { migrator.InstallSchema(); AppendVersion(SchemaName, migrator.LatestVersionAvailable); } else { if (latest != migrator.LatestVersionAvailable) { migrator.MigrateToLatestFrom(latest); AppendVersion(SchemaName, migrator.LatestVersionAvailable); } } } t.Commit(); } }
public void two_versions_of_setup_Db_throws() { _tasks.Add(new InstallerTask()); var s = new SchemaMigrationExecutor(new FakeRunner(), _tasks, "TestSchema"); Assert.Throws <InvalidOperationException>(() => s.InstallSchema()); }
public SchemaMigrationExecutorTests() { LogHelper.Register(new ConsoleLogger(), "Default"); _sb = new StringBuilder(); _tasks = new List <IMigrationTask>(); _tasks.Add(new Migration2(_sb)); _tasks.Add(new InstallerTask(_sb)); _tasks.Add(new Migration1(_sb)); var runner = new FakeRunner(); _schema = new SchemaMigrationExecutor(runner, _tasks, "TestSchema"); }