Represents a SQL script to be executed.
Inheritance: Net.Sf.Dbdeploy.Database.UniqueChange
        protected void ApplyChangeScript(ChangeScript script)
        {
            ICollection<string> statements = this.splitter.Split(script.GetContent());

            int i = 0;

            foreach (var statement in statements)
            {
                try
                {
                    if (statements.Count > 1)
                    {
                        this.infoTextWriter.WriteLine(" -> statement " + (i + 1) + " of " + statements.Count + "...");
                    }

                    this.queryExecuter.Execute(statement);

                    i++;
                }
                catch (DbException e)
                {
                    throw new ChangeScriptFailedException(e, script, i + 1, statement);
                }
            }
        }
示例#2
0
        public void TestToStringReturnsASensibleValue()
        {
            FileInfo     file         = new FileInfo("abc.txt");
            ChangeScript changeScript = new ChangeScript(5, file);

            Assert.AreEqual("#5: abc.txt", changeScript.ToString());
        }
 /// <summary>
 /// Executa um determinado script passando um objeto ChangeScript e seu respectivo conteúdo SQL
 /// </summary>
 /// <param name="changeScript"></param>
 /// <param name="scriptContent"></param>
 public void Executar(ChangeScript changeScript, string scriptContent)
 {
     QueryExecuter.Open();
     var criarChangeLog = VerificarSeDeveCriarTabelaChangeLog();
     DirectToDbApplier.ApplyScriptContent(changeScript, scriptContent, criarChangeLog);
     QueryExecuter.Close();
 }
        public ChangeScriptFailedException(DbException cause, ChangeScript script, int statement, string executedSql)
            : base(cause)
	    {
            this.script = script;
            this.statement = statement;
            this.executedSql = executedSql;
	    }
 public void TestChangeScriptsNaturallyOrderById()
 {
     ChangeScript one = new ChangeScript(1);
     ChangeScript two = new ChangeScript(2);
     Assert.IsTrue(one.CompareTo(two) < 1);
     Assert.IsTrue(two.CompareTo(one) >= 1);
 }
示例#6
0
        public void ReturnsAllScannedScripts()
        {
            var scriptOne = new ChangeScript("2.0.0", 1);
            var scriptTwo = new ChangeScript("2.0.0", 2);

            var scannerOne = new Mock <IScriptScanner>();

            scannerOne.Setup(s => s.GetChangeScripts()).Returns(new List <ChangeScript> {
                scriptOne
            });

            var scannerTwo = new Mock <IScriptScanner>();

            scannerTwo.Setup(s => s.GetChangeScripts()).Returns(new List <ChangeScript> {
                scriptTwo
            });

            var allScriptScanner = new AllScriptScanner(scannerOne.Object, scannerTwo.Object);
            var changeScripts    = allScriptScanner.GetChangeScripts();

            var containsFirstScript = changeScripts.Contains(scriptOne);

            Assert.IsTrue(containsFirstScript);

            var containsSecondScript = changeScripts.Contains(scriptTwo);

            Assert.IsTrue(containsSecondScript);
        }
        public void TestChangeScriptsHaveAnIdAndAFile()
        {
            FileInfo file = new FileInfo("abc.txt");
            ChangeScript changeScript = new ChangeScript(5, file, Encoding.Default);

            Assert.AreEqual(5, changeScript.GetId());
            Assert.AreEqual(file, changeScript.GetFile());
        }
        public void TestChangeScriptsHaveAnIdAndAFile()
        {
            FileInfo file = new FileInfo("abc.txt");
            ChangeScript changeScript = new ChangeScript("v1.0", 5, file, Encoding.Default);

            Assert.AreEqual(5, changeScript.ScriptNumber);
            Assert.AreEqual(file, changeScript.FileInfo);
        }
        public void TestChangeScriptsHaveAnIdAndAFile()
        {
            FileInfo     file         = new FileInfo("abc.txt");
            ChangeScript changeScript = new ChangeScript(5, file, Encoding.Default);

            Assert.AreEqual(5, changeScript.GetId());
            Assert.AreEqual(file, changeScript.GetFile());
        }
示例#10
0
        public void TestChangeScriptsHaveAnIdAndAFile()
        {
            FileInfo     file         = new FileInfo("abc.txt");
            ChangeScript changeScript = new ChangeScript("v1.0", 5, file, Encoding.Default);

            Assert.AreEqual(5, changeScript.ScriptNumber);
            Assert.AreEqual(file, changeScript.FileInfo);
        }
示例#11
0
        public void TestChangeScriptsNaturallyOrderById()
        {
            ChangeScript one = new ChangeScript(1);
            ChangeScript two = new ChangeScript(2);

            Assert.IsTrue(one.CompareTo(two) < 1);
            Assert.IsTrue(two.CompareTo(one) >= 1);
        }
        public void ShouldInsertToSchemaVersionTable() 
        {
            ChangeScript changeScript = new ChangeScript(1, "script.sql");

            this.applier.InsertToSchemaVersionTable(changeScript);

            this.schemaVersionManager.Verify(s => s.RecordScriptApplied(changeScript));
        }
 public virtual void TestCanRetrieveDeltaFragmentHeaderSql()
 {
     ChangeScript script = new ChangeScript(3, "description");
     Assert.AreEqual(@"--------------- Fragment begins: #3 ---------------
     INSERT INTO changelog (ChangeNumber, Project, StartDate, AppliedBy, FileName) VALUES (3, 'All', getdate(), 'none specified', 'description')
     GO
     ",
         databaseSchemaVersion.GenerateDoDeltaFragmentHeader(script));
 }
示例#14
0
        public void retornar_nulo_quando_nao_encontrar_script_especifico()
        {
            databaseSchemaVersionManager.Setup(x => x.GetAppliedChanges()).Returns(new List <ChangeEntry>());
            var changeScript = new ChangeScript("folder2", 1, new FileInfo("script.sql"), Encoding.UTF8);

            var changeEntry = repositorioScripts.ObterScriptExecutado(changeScript);

            changeEntry.Should().BeNull();
        }
        public virtual void TestCanRetrieveDeltaFragmentHeaderSql()
        {
            ChangeScript script = new ChangeScript(3, "description");
            Assert.AreEqual(@"--------------- Fragment begins: #3 ---------------
INSERT INTO changelog (change_number, delta_set, start_dt, applied_by, description) VALUES (3, 'All', getdate(), user_name(), 'description')
GO
",
                databaseSchemaVersion.GenerateDoDeltaFragmentHeader(script));
        }
示例#16
0
        public void CanFormatAChangeScriptList()
        {
            ChangeScript change1 = new ChangeScript(1);
            ChangeScript change3 = new ChangeScript(3);
            List<ChangeScript> list = new List<ChangeScript>();
            list.Add(change1);
            list.Add(change3);

            Assert.AreEqual("1, 3", prettyPrinter.FormatChangeScriptList(list));
        }
        public void executar_um_conteudo_script()
        {
            const string conteudoSql = "Create Table tabelaTeste (id int not null, name varchar(45) not null, primary key (id));";
            var changeScript = new ChangeScript("2.0.0.0", 8, new FileInfo(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"Mocks\Versioned\2.0.0.0\8.Create Product Table.sql")), Encoding.UTF8);

            executorScriptsIndividuais.Executar(changeScript, conteudoSql);

            AssertTableExists("tabelaTeste");
            AssertTableExists("ChangeLog");
        }
		public virtual void TestCanRetrieveUndoDeltaFragmentFooterSql()
		{
			ChangeScript script = new ChangeScript(3, "description");
			Assert.AreEqual(
				@"DELETE FROM changelog WHERE change_number = 3 AND delta_set = 'All'
GO

--------------- Fragment ends: #3 ---------------",
				databaseSchemaVersion.GenerateUndoDeltaFragmentFooter(script));
		}
        public virtual void TestCanRetrieveDeltaFragmentFooterSql()
        {
            ChangeScript script = new ChangeScript(3, "description");
            Assert.AreEqual(
                @"UPDATE changelog SET complete_dt = getdate() WHERE change_number = 3 AND delta_set = 'All'
GO

--------------- Fragment ends: #3 ---------------",
                databaseSchemaVersion.GenerateDoDeltaFragmentFooter(script));
        }
        public void ApplyChangeUndoScript(ChangeScript script)
        {
            output.WriteLine();
            output.WriteLine("-- Change script: " + script);
			
			if (_useTransaction)
				output.WriteLine(_dbmsSyntax.GenerateBeginTransaction());

			CopyFileUndoContentsToStdOut(script.GetFile());

			if (_useTransaction)
				output.WriteLine(_dbmsSyntax.GenerateCommitTransaction());
		}
        public string GenerateDoDeltaFragmentFooter(ChangeScript changeScript)
        {
            StringBuilder builder = new StringBuilder();

            builder.AppendLine(DbmsSyntax.GenerateStatementDelimiter());
            builder.AppendLine("UPDATE " + TableName + " SET CompletedDate = "
                           + DbmsSyntax.GenerateTimestamp()
                           + " WHERE ChangeNumber = " + changeScript.GetId()
                           + " AND Project = '" + _deltaSet + "'"
                           + DbmsSyntax.GenerateStatementDelimiter());
            builder.AppendLine(DbmsSyntax.GenerateCommit());
            builder.Append("--------------- Fragment ends: " + changeScript + " ---------------");
            return builder.ToString();
        }
        public string GenerateDoDeltaFragmentHeader(ChangeScript changeScript)
        {
            StringBuilder builder = new StringBuilder();

            builder.AppendLine("--------------- Fragment begins: " + changeScript + " ---------------");

            builder.AppendLine("INSERT INTO " + TableName +
                           " (ChangeNumber, Project, StartDate, AppliedBy, FileName)" +
                           " VALUES (" + changeScript.GetId() + ", '" + _deltaSet + "', " +
                           DbmsSyntax.GenerateTimestamp() +
                           ", " + DbmsSyntax.GenerateChangeOwner() + ", '" + changeScript.GetDescription() + "')" +
                           DbmsSyntax.GenerateStatementDelimiter());
            builder.Append(DbmsSyntax.GenerateCommit());
            return builder.ToString();
        }
        public void TestChangeScriptsMayBeNumberedFromZero()
        {
            ChangeScript zero = new ChangeScript(0);
            ChangeScript four = new ChangeScript(4);


            ChangeScript[]         scripts    = new ChangeScript[] { zero, four };
            ChangeScriptRepository repository =
                new ChangeScriptRepository(new List <ChangeScript>(scripts));

            List <ChangeScript> list = repository.GetOrderedListOfDoChangeScripts();

            Assert.AreEqual(2, list.Count);
            Assert.AreSame(zero, list[0]);
            Assert.AreSame(four, list[1]);
        }
        public void TestChangeScriptsMayBeNumberedFromZero()
        {
            ChangeScript zero = new ChangeScript(0);
            ChangeScript four = new ChangeScript(4);


            ChangeScript[] scripts = new ChangeScript[] {zero, four};
            ChangeScriptRepository repository =
                new ChangeScriptRepository(new List<ChangeScript>(scripts));

            List<ChangeScript> list = repository.GetAvailableChangeScripts().ToList();

            Assert.AreEqual(2, list.Count);
            Assert.AreSame(zero, list[0]);
            Assert.AreSame(four, list[1]);
        }
        public void TestThrowsWhenConstructedWithAChangeScriptListThatHasDuplicates()
        {
            ChangeScript two = new ChangeScript(2);
            ChangeScript three = new ChangeScript(3);
            ChangeScript anotherTwo = new ChangeScript(2);

            try
            {
                ChangeScript[] scripts = {three, two, anotherTwo};
                new ChangeScriptRepository(new List<ChangeScript>(scripts));
                Assert.Fail("expected exception");
            }
            catch (DuplicateChangeScriptException ex)
            {
                Assert.AreEqual("There is more than one change script with number 2", ex.Message);
            }
        }
        public void TestThrowsWhenConstructedWithAChangeScriptListThatHasDuplicates()
        {
            ChangeScript two        = new ChangeScript(2);
            ChangeScript three      = new ChangeScript(3);
            ChangeScript anotherTwo = new ChangeScript(2);

            try
            {
                ChangeScript[] scripts = { three, two, anotherTwo };
                new ChangeScriptRepository(new List <ChangeScript>(scripts));
                Assert.Fail("expected exception");
            }
            catch (DuplicateChangeScriptException ex)
            {
                Assert.AreEqual("There is more than one change script with number 2", ex.Message);
            }
        }
示例#27
0
        public void obter_scripts_pedente_execucao_e_marcados_como_resolvido()
        {
            var scriptAplicado1 = new ChangeEntry("2.0.0.0", 8);

            scriptAplicado1.ScriptName = "8.Create Product Table.sql";
            scriptAplicado1.Status     = ScriptStatus.ProblemResolved;

            var scriptAplicado2 = new ChangeEntry("2.0.0.0", 9);

            scriptAplicado2.ScriptName = "09.Add Product Data.sql";
            scriptAplicado2.Status     = ScriptStatus.Success;

            var scriptAplicado3 = new ChangeEntry("2.0.0.0", 10);

            scriptAplicado2.ScriptName = "10.Add Product Data.sql";
            scriptAplicado2.Status     = ScriptStatus.SucessRevisedUser;

            databaseSchemaVersionManager.Setup(x => x.GetAppliedChanges()).Returns(new List <ChangeEntry>
            {
                scriptAplicado1,
                scriptAplicado2,
                scriptAplicado3,
            });

            var changeScript1 = new ChangeScript("2.0.0.0", 8, "8.Create Product Table.sql");
            var changeScript2 = new ChangeScript("2.0.0.0", 9, "09.Add Product Data.sql");
            var changeScript3 = new ChangeScript("2.10.0.0", 1, "1.SQLCMD Add Customer Table.sql");

            changeScriptRepository.Setup(x => x.GetAvailableChangeScripts()).Returns(new List <ChangeScript>
            {
                changeScript1,
                changeScript2,
                changeScript3
            });

            var listaChangeScripts = repositorioScripts.ObterScriptsPendenteExecucao(null);

            listaChangeScripts.Should().NotBeEmpty();
            listaChangeScripts.Count.Should().Be(2);

            listaChangeScripts.Should().NotContain(x => x.ScriptName == "09.Add Product Data.sql" && x.Folder == "2.0.0.0");
            listaChangeScripts.Should().NotContain(x => x.ScriptName == "10.Add Product Data.sql" && x.Folder == "2.0.0.0");
            listaChangeScripts.Should().Contain(x => x.ScriptName == "8.Create Product Table.sql" && x.Folder == "2.0.0.0");
            listaChangeScripts.Should().Contain(x => x.ScriptName == "1.SQLCMD Add Customer Table.sql" && x.Folder == "2.10.0.0");
        }
示例#28
0
        public void obter_script_especifico()
        {
            var changeEntryASerRetornado = new ChangeEntry("folder2", 1);

            databaseSchemaVersionManager.Setup(x => x.GetAppliedChanges()).Returns(new List <ChangeEntry>
            {
                new ChangeEntry("folder1", 1),
                new ChangeEntry("folder1", 2),
                changeEntryASerRetornado,
                new ChangeEntry("folder2", 2),
            });
            var changeScript = new ChangeScript("folder2", 1, new FileInfo("script.sql"), Encoding.UTF8);

            var changeEntry = repositorioScripts.ObterScriptExecutado(changeScript);

            changeEntry.Should().NotBeNull();
            changeEntry.Should().Be(changeEntryASerRetornado);
        }
        public void TestGivenASetOfChangeScriptsReturnsThemCorrectly()
        {
            ChangeScript one = new ChangeScript(1);
            ChangeScript two = new ChangeScript(2);
            ChangeScript three = new ChangeScript(3);
            ChangeScript four = new ChangeScript(4);

            ChangeScript[] scripts = {three, two, four, one};

            ChangeScriptRepository repository = new ChangeScriptRepository(new List<ChangeScript>(scripts));

            List<ChangeScript> list = repository.GetAvailableChangeScripts().ToList();

            Assert.AreEqual(4, list.Count);
            Assert.AreSame(one, list[0]);
            Assert.AreSame(two, list[1]);
            Assert.AreSame(three, list[2]);
            Assert.AreSame(four, list[3]);
        }
        public void TestGivenASetOfChangeScriptsReturnsThemCorrectly()
        {
            ChangeScript one   = new ChangeScript(1);
            ChangeScript two   = new ChangeScript(2);
            ChangeScript three = new ChangeScript(3);
            ChangeScript four  = new ChangeScript(4);

            ChangeScript[] scripts = { three, two, four, one };

            ChangeScriptRepository repository = new ChangeScriptRepository(new List <ChangeScript>(scripts));

            List <ChangeScript> list = repository.GetOrderedListOfDoChangeScripts();

            Assert.AreEqual(4, list.Count);
            Assert.AreSame(one, list[0]);
            Assert.AreSame(two, list[1]);
            Assert.AreSame(three, list[2]);
            Assert.AreSame(four, list[3]);
        }
示例#31
0
        public void aplicar_mudancas_ate_script_informado()
        {
            var scriptAplicado1 = new ChangeEntry("2.0.0.0", 8);

            scriptAplicado1.ScriptName = "8.Create Product Table.sql";
            scriptAplicado1.Status     = ScriptStatus.Success;

            var scriptAplicado2 = new ChangeEntry("2.0.0.0", 9);

            scriptAplicado2.ScriptName = "09.Add Product Data.sql";
            scriptAplicado2.Status     = ScriptStatus.Success;

            databaseSchemaVersionManager.Setup(x => x.GetAppliedChanges()).Returns(new List <ChangeEntry>
            {
                scriptAplicado1,
                scriptAplicado2
            });

            var changeScript1 = new ChangeScript("2.0.0.0", 8);
            var changeScript2 = new ChangeScript("2.0.0.0", 9);
            var changeScript3 = new ChangeScript("2.10.0.0", 1);
            var changeScript4 = new ChangeScript("2.10.0.0", 2);
            var changeScript5 = new ChangeScript("2.10.0.0", 3);

            changeScriptRepository.Setup(x => x.GetAvailableChangeScripts()).Returns(new List <ChangeScript>
            {
                changeScript1,
                changeScript2,
                changeScript3,
                changeScript4,
                changeScript5
            });

            var pendenteExecucao = repositorioScripts.ObterScriptsPendenteExecucao(new UniqueChange("2.10.0.0", 2));

            pendenteExecucao.Should().NotBeEmpty();
            pendenteExecucao.Count.Should().Be(2);
            pendenteExecucao[0].Folder.Should().Be("2.10.0.0");
            pendenteExecucao[0].ScriptNumber.Should().Be(1);
            pendenteExecucao[1].Folder.Should().Be("2.10.0.0");
            pendenteExecucao[1].ScriptNumber.Should().Be(2);
        }
        public void obter_scripts_pedente_execucao_e_marcados_como_resolvido()
        {
            var scriptAplicado1 = new ChangeEntry("2.0.0.0", 8);
            scriptAplicado1.ScriptName = "8.Create Product Table.sql";
            scriptAplicado1.Status = ScriptStatus.ProblemResolved;
            
            var scriptAplicado2 = new ChangeEntry("2.0.0.0", 9);
            scriptAplicado2.ScriptName = "09.Add Product Data.sql";
            scriptAplicado2.Status = ScriptStatus.Success;

            var scriptAplicado3 = new ChangeEntry("2.0.0.0", 10);
            scriptAplicado2.ScriptName = "10.Add Product Data.sql";
            scriptAplicado2.Status = ScriptStatus.SucessRevisedUser;

            databaseSchemaVersionManager.Setup(x => x.GetAppliedChanges()).Returns(new List<ChangeEntry>
            {
                scriptAplicado1,
                scriptAplicado2,
                scriptAplicado3,
            });

            var changeScript1 = new ChangeScript("2.0.0.0", 8, "8.Create Product Table.sql");
            var changeScript2 = new ChangeScript("2.0.0.0", 9, "09.Add Product Data.sql");
            var changeScript3 = new ChangeScript("2.10.0.0", 1, "1.SQLCMD Add Customer Table.sql");

            changeScriptRepository.Setup(x => x.GetAvailableChangeScripts()).Returns(new List<ChangeScript>
            {
                changeScript1,
                changeScript2,
                changeScript3
            });

            var listaChangeScripts = repositorioScripts.ObterScriptsPendenteExecucao(null);

            listaChangeScripts.Should().NotBeEmpty();
            listaChangeScripts.Count.Should().Be(2);

            listaChangeScripts.Should().NotContain(x => x.ScriptName == "09.Add Product Data.sql" && x.Folder == "2.0.0.0");
            listaChangeScripts.Should().NotContain(x => x.ScriptName == "10.Add Product Data.sql" && x.Folder == "2.0.0.0");
            listaChangeScripts.Should().Contain(x => x.ScriptName == "8.Create Product Table.sql" && x.Folder == "2.0.0.0");
            listaChangeScripts.Should().Contain(x => x.ScriptName == "1.SQLCMD Add Customer Table.sql" && x.Folder == "2.10.0.0");
        }
        public void TestThrowsWhenConstructedWithAChangeScriptListThatHasDuplicates()
        {
            var two = new ChangeScript("Alpha", 2);
            var three = new ChangeScript("Alpha", 3);
            var four = new ChangeScript("Beta", 3);
            var anotherTwo = new ChangeScript("Alpha", 2);

            try
            {
                var scripts = new[] { three, four, two, anotherTwo };
                // ReSharper disable ObjectCreationAsStatement
                new ChangeScriptRepository(new List<ChangeScript>(scripts));
                // ReSharper restore ObjectCreationAsStatement
                Assert.Fail("expected exception");
            }
            catch (DuplicateChangeScriptException ex)
            {
                Assert.AreEqual("There is more than one change script with key 'Alpha/2'.", ex.Message);
            }
        }
        public void ReturnsAllScannedScripts()
        {
            var scriptOne = new ChangeScript("2.0.0", 1);
            var scriptTwo = new ChangeScript("2.0.0", 2);

            var scannerOne = new Mock<IScriptScanner>();
            scannerOne.Setup(s => s.GetChangeScripts()).Returns(new List<ChangeScript> { scriptOne });

            var scannerTwo = new Mock<IScriptScanner>();
            scannerTwo.Setup(s => s.GetChangeScripts()).Returns(new List<ChangeScript> { scriptTwo });

            var allScriptScanner = new AllScriptScanner(scannerOne.Object, scannerTwo.Object);
            var changeScripts = allScriptScanner.GetChangeScripts();

            var containsFirstScript = changeScripts.Contains(scriptOne);
            Assert.IsTrue(containsFirstScript);

            var containsSecondScript = changeScripts.Contains(scriptTwo);
            Assert.IsTrue(containsSecondScript);
        }
示例#35
0
        public void TestThrowsWhenConstructedWithAChangeScriptListThatHasDuplicates()
        {
            var two        = new ChangeScript("Alpha", 2);
            var three      = new ChangeScript("Alpha", 3);
            var four       = new ChangeScript("Beta", 3);
            var anotherTwo = new ChangeScript("Alpha", 2);

            try
            {
                var scripts = new[] { three, four, two, anotherTwo };
                // ReSharper disable ObjectCreationAsStatement
                new ChangeScriptRepository(new List <ChangeScript>(scripts));
                // ReSharper restore ObjectCreationAsStatement
                Assert.Fail("expected exception");
            }
            catch (DuplicateChangeScriptException ex)
            {
                Assert.AreEqual("There is more than one change script with key 'Alpha/2'.", ex.Message);
            }
        }
        public virtual void RecordScriptApplied(ChangeScript script)
        {
            try
            {
                string sql = string.Format(
                    CultureInfo.InvariantCulture,
                    "INSERT INTO {0} (change_number, complete_dt, applied_by, description) VALUES (@1, {1}, {2}, @2)", 
                    this.changeLogTableName,
                    this.syntax.GenerateTimestamp(),
                    this.syntax.GenerateUser());

                this.queryExecuter.Execute(
                        sql,
                        script.GetId(),
                        script.GetDescription());
            }
            catch (DbException e)
            {
                throw new SchemaVersionTrackingException("Could not update change log because: " + e.Message, e);
            }
        }
示例#37
0
        public void obter_todos_scripts()
        {
            var changeScript1 = new ChangeScript("2.0.0.0", 8, "8.Create Product Table.sql");
            var changeScript2 = new ChangeScript("2.0.0.0", 9, "09.Add Product Data.sql");
            var changeScript3 = new ChangeScript("2.10.0.0", 1, "1.SQLCMD Add Customer Table.sql");

            changeScriptRepository.Setup(x => x.GetAvailableChangeScripts()).Returns(new List <ChangeScript>
            {
                changeScript1,
                changeScript2,
                changeScript3
            });

            var listaTodosOsScripts = repositorioScripts.ObterTodosOsScripts();

            listaTodosOsScripts.Should().NotBeEmpty();
            listaTodosOsScripts.Count.Should().BeGreaterOrEqualTo(3);

            listaTodosOsScripts.Should().Contain(x => x.ScriptName == "8.Create Product Table.sql" && x.Folder == "2.0.0.0");
            listaTodosOsScripts.Should().Contain(x => x.ScriptName == "09.Add Product Data.sql" && x.Folder == "2.0.0.0");
            listaTodosOsScripts.Should().Contain(x => x.ScriptName == "1.SQLCMD Add Customer Table.sql" && x.Folder == "2.10.0.0");
        }
        public string GenerateDoDeltaFragmentHeader(ChangeScript changeScript)
        {
            var builder = new StringBuilder();
            var syntax = DbmsSyntax;

            builder.AppendLine("--------------- Fragment begins: " + changeScript + " ---------------");
            builder.AppendLine("SET NOCOUNT ON");
            builder.AppendLine(syntax.GenerateTrace(">>>>>>>>>>>>>>> INICIA  DELTA: {0} >>>>>>>>>>>>>>>", changeScript));

            builder.AppendLine("INSERT INTO " + TableName +
                           " (change_number, delta_set, start_dt, applied_by, description)" +
                           " VALUES (" + changeScript.GetId() + ", '" + deltaSet + "', " +
                           syntax.GenerateTimestamp() +
                           ", " + syntax.GenerateUser() + ", '" + changeScript.GetDescription() + "')");
            builder.AppendLine(syntax.GenerateStatementDelimiter());

            builder.Append(syntax.GenerateCommit());
            builder.AppendLine("SET NOCOUNT OFF");
            return builder.ToString();
        }
示例#39
0
        public int CompareTo(object o)
        {
            ChangeScript other = (ChangeScript)o;

            return(id.CompareTo(other.id));
        }
 /// <summary>
 /// Retornar um objeto ChangeEntry com as informações de um determinado script aplicado
 /// </summary>
 /// <param name="changeScript"></param>
 /// <returns></returns>
 public ChangeEntry ObterScriptExecutado(ChangeScript changeScript)
 {
     var scriptsAplicados = ObterScriptsAplicados();
     return scriptsAplicados.FirstOrDefault(x => x.CompareTo(changeScript) == 0);
 }
        public string GenerateUndoDeltaFragmentFooter(ChangeScript changeScript)
        {
            StringBuilder builder = new StringBuilder();

			builder.AppendLine("DELETE FROM " + TableName
                           + " WHERE change_number = " + changeScript.GetId()
                           + " AND delta_set = '" + deltaSet + "'"
                           + DbmsSyntax.GenerateStatementDelimiter());
            builder.AppendLine(DbmsSyntax.GenerateCommit());
            builder.Append("--------------- Fragment ends: " + changeScript + " ---------------");
            return builder.ToString();
        }
		public string GenerateUndoDeltaFragmentHeader(ChangeScript changeScript)
		{
			return "--------------- Fragment begins: " + changeScript + " ---------------";
		}
        public string GenerateDoDeltaFragmentHeader(ChangeScript changeScript)
        {
            StringBuilder builder = new StringBuilder();

            builder.AppendLine("--------------- Fragment begins: " + changeScript + " ---------------");

			builder.AppendLine("INSERT INTO " + TableName +
                           " (change_number, delta_set, start_dt, applied_by, description)" +
                           " VALUES (" + changeScript.GetId() + ", '" + deltaSet + "', " +
                           DbmsSyntax.GenerateTimestamp() +
                           ", " + DbmsSyntax.GenerateUser() + ", '" + changeScript.GetDescription() + "')" +
                           DbmsSyntax.GenerateStatementDelimiter());
            builder.Append(DbmsSyntax.GenerateCommit());
            return builder.ToString();
        }
示例#44
0
        public int CompareTo(object obj)
        {
            ChangeScript other = (ChangeScript)obj;

            return(this.id.CompareTo(other.id));
        }
		public virtual void TestCanRetrieveUndoDeltaFragmentHeaderSql()
		{
			ChangeScript script = new ChangeScript(3, "description");
			Assert.AreEqual(@"--------------- Fragment begins: #3 ---------------", databaseSchemaVersion.GenerateUndoDeltaFragmentHeader(script));
		}
示例#46
0
        /// <summary>
        /// Retornar um objeto ChangeEntry com as informações de um determinado script aplicado
        /// </summary>
        /// <param name="changeScript"></param>
        /// <returns></returns>
        public ChangeEntry ObterScriptExecutado(ChangeScript changeScript)
        {
            var scriptsAplicados = ObterScriptsAplicados();

            return(scriptsAplicados.FirstOrDefault(x => x.CompareTo(changeScript) == 0));
        }
        public string GenerateDoDeltaFragmentFooter(ChangeScript changeScript)
        {
            var builder = new StringBuilder();
            var syntax = DbmsSyntax;

            builder.AppendLine("SET NOCOUNT ON");
            builder.AppendLine(syntax.GenerateStatementDelimiter());
			builder.AppendLine("UPDATE " + TableName + " SET complete_dt = "
                           + syntax.GenerateTimestamp()
                           + " WHERE change_number = " + changeScript.GetId()
                           + " AND delta_set = '" + deltaSet + "'"
                           + syntax.GenerateStatementDelimiter());
            builder.AppendLine(syntax.GenerateCommit());

            builder.AppendLine(syntax.GenerateTrace("<<<<<<<<<<<<<<< TERMINA DELTA: {0} <<<<<<<<<<<<<<<", changeScript));
            builder.AppendLine(syntax.GenerateTrace(""));
            builder.AppendLine("SET NOCOUNT OFF");
            builder.Append("--------------- Fragment ends: " + changeScript + " ---------------");
            return builder.ToString();
        }
示例#48
0
        protected void SetUp()
        {
            FileInfo tempFile = new FileInfo(Path.GetTempFileName());

            script = new ChangeScript(1, tempFile);
        }