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);
        }
Exemple #6
0
        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);
        }