private void LoadSchemaVersion() { var schemaChanges = GetTable(SchemaChangesTableName, SchemaChangesTableSchema); if (schemaChanges == null) { throw new ApplicationException("Schema changes table does not exist."); } if (schemaChanges.RowCount < 1) { throw new ApplicationException("No schema changes records"); } var script = string.Format("SELECT TOP 1 Major, Minor, Point FROM {0}.{1} ORDER BY Major DESC, Minor DESC, Point DESC", SchemaChangesTableSchema, SchemaChangesTableName); var set = _Database.ExecuteWithResults(script); var row = set.Tables[0].Rows[0]; _Version = SchemaVersion.CreateVersion( row["Major"].ToString(), row["Minor"].ToString(), row["Point"].ToString()); }
public void CreateVersion_ValidNumbers_ParsesCorrectly() { var version = SchemaVersion.CreateVersion("001.002.003.sql"); Expect(version.Major, Is.EqualTo(1)); Expect(version.Minor, Is.EqualTo(2)); Expect(version.Point, Is.EqualTo(3)); }
public void DispatchCommand_WithUpdateDatabaseToVersionOption_CallsUpdateDatabaseToVersion() { var version = SchemaVersion.CreateVersion("1.2.3"); var dispatcher = NewDispatcher(); dispatcher.DispatchCommand(new[] { "-d", DatabaseName, "-u", "1.2.3" }); Expect(dispatcher.MigrationsService.DatabaseName, Is.EqualTo(DatabaseName)); dispatcher.MigrationsService.AssertWasCalled(s => s.UpdateDatabase(version)); }
public void TestComparisonOperators() { var lower = SchemaVersion.CreateVersion(1, 2, 3); var higher = SchemaVersion.CreateVersion(1, 2, 5); var sameAsLower = SchemaVersion.CreateVersion(1, 2, 3); Expect(lower < higher); Expect(higher > lower); Expect(higher != lower); Expect(lower == sameAsLower); }
public void TestSortingAListOfSchemas() { var versions = new List <SchemaVersion> { SchemaVersion.CreateVersion(1, 2, 55), SchemaVersion.CreateVersion(1, 2, 70), SchemaVersion.CreateVersion(1, 2, 40), SchemaVersion.CreateVersion(1, 2, 35) }; var sorted = versions.OrderBy(v => v).ToList(); Expect(sorted[0].Point == 35); Expect(sorted[1].Point == 40); Expect(sorted[2].Point == 55); Expect(sorted[3].Point == 70); }
private void InternalDispatch(ArgumentParser parser) { if (!string.IsNullOrEmpty(parser.ConnectionString)) { MigrationsService.SetConnectionString(parser.ConnectionString); } MigrationsService.DatabaseName = parser.Database; if (!string.IsNullOrEmpty(parser.DirectoryBase)) { MigrationsService.SetDirectoryBase(parser.DirectoryBase); } if (parser.ScriptCreate) { MigrationsService.ScriptCreateDatabase(); } if (parser.ScriptIndividual) { MigrationsService.ScriptIndividualObjects(); } if (parser.GetSchemaVersion) { var version = MigrationsService.GetVersion(); Console.WriteLine(version.ToString()); } if (parser.CreateDatabase) { if (parser.ResetDatabase) { MigrationsService.DropAndCreateDatabase(); } MigrationsService.LoadSchema(); } if (parser.Backup) { //Backup must be before updates! MigrationsService.BackupDatabase(parser.BackupFile); } if (parser.UpdateDatabase) { if (!string.IsNullOrEmpty(parser.UpdateDatabaseVersion)) { MigrationsService.UpdateDatabase(SchemaVersion.CreateVersion(parser.UpdateDatabaseVersion)); } else { MigrationsService.UpdateDatabase(); } } if (parser.CreateSchemaLogTable) { MigrationsService.CreateSchemaLogTable(); } if (!string.IsNullOrEmpty(parser.TableData)) { MigrationsService.ScriptTableData(parser.TableDataFile, parser.TableData); } if (parser.RunScript) { MigrationsService.RunScript(parser.ScriptToRun); } if (parser.Restore) { MigrationsService.RestoreDatabase(parser.RestoreFile); } if (parser.GenerateUpdate) { MigrationsService.GenerateUpdate(parser.GenerateUpdateCompareDatabase); } if (parser.MarkSchemaChangesWithLatestVersion) { MigrationsService.MarkSchemaChangesWithLatestVersion(); } }
public void CreateVersion_InvalidPointNumber_ThrowsArgumentException() { TestDelegate action = () => SchemaVersion.CreateVersion("1.2.A.sql"); Assert.Throws <ArgumentException>(action); }