protected override void ProcessRecord() { base.ProcessRecord(); var infoTextWriter = new LambdaTextWriter(WriteVerbose); List<ChangeScript> allChangeScripts = new DirectoryScanner(infoTextWriter, Encoding.UTF8, new DirectoryInfo(this.deltasDirectory)) .GetChangeScripts(); var repository = new ChangeScriptRepository(allChangeScripts); var changeScripts = repository.GetAvailableChangeScripts(); DbmsFactory factory = new DbmsFactory(this.DatabaseType, this.ConnectionString); var queryExecuter = new QueryExecuter(factory); var schemaManager = new DatabaseSchemaVersionManager(queryExecuter, factory.CreateDbmsSyntax(), this.TableName); var appliedChanges = schemaManager.GetAppliedChanges(); var notAppliedChangeScripts = changeScripts.Where(c => appliedChanges.All(a => a.ScriptNumber != c.ScriptNumber)); var descriptionPrettyPrinter = new DescriptionPrettyPrinter(); var objects = notAppliedChangeScripts .Select(script => new { Id = script.ScriptNumber, Description = descriptionPrettyPrinter.Format(script.ScriptName), File = script.FileInfo }); this.WriteObject(objects, true); }
protected override void ProcessRecord() { base.ProcessRecord(); var infoTextWriter = new LambdaTextWriter(WriteVerbose); List <ChangeScript> allChangeScripts = new DirectoryScanner(infoTextWriter, Encoding.UTF8) .GetChangeScriptsForDirectory(new DirectoryInfo(this.deltasDirectory)); var repository = new ChangeScriptRepository(allChangeScripts); var changeScripts = repository.GetAvailableChangeScripts(); DbmsFactory factory = new DbmsFactory(this.DatabaseType, this.ConnectionString); var queryExecuter = new QueryExecuter(factory); var schemaManager = new DatabaseSchemaVersionManager(queryExecuter, factory.CreateDbmsSyntax(), this.TableName, true); var appliedChanges = schemaManager.GetAppliedChanges(); var notAppliedChangeScripts = changeScripts.Where(c => appliedChanges.All(a => a.ScriptNumber != c.ScriptNumber)); var descriptionPrettyPrinter = new DescriptionPrettyPrinter(); var objects = notAppliedChangeScripts .Select(script => new { Id = script.ScriptNumber, Description = descriptionPrettyPrinter.Format(script.ScriptName), File = script.FileInfo }); this.WriteObject(objects, true); }
protected override void ProcessRecord() { base.ProcessRecord(); var infoTextWriter = new LambdaTextWriter(WriteVerbose); var updateText = new StringBuilder(); var stringWriterForUpdateScript = new StringWriter(updateText); List<ChangeScript> changeScripts = new DirectoryScanner(infoTextWriter).GetChangeScriptsForDirectory(new DirectoryInfo(_deltasDirectory)); new PowershellPrintStreamDeployer(_databaseSchemaVersion, new ChangeScriptRepository(changeScripts), stringWriterForUpdateScript, _dbmsFactory.CreateDbmsSyntax(), UseTransaction, null, infoTextWriter) .DoDeploy(Int32.MaxValue, infoTextWriter); using (var connection = _dbmsFactory.CreateConnection()) { connection.Open(); var command = connection.CreateCommand(); command.CommandType = CommandType.Text; command.CommandText = updateText.ToString(); var result = command.ExecuteNonQuery(); WriteObject(new {RowsChanged = result}); } }
protected override void ProcessRecord() { base.ProcessRecord(); var infoTextWriter = new LambdaTextWriter(WriteVerbose); List<ChangeScript> allChangeScripts = new DirectoryScanner(infoTextWriter).GetChangeScriptsForDirectory(new DirectoryInfo(_deltasDirectory)); var repository = new ChangeScriptRepository(allChangeScripts); var changeScripts = repository.GetOrderedListOfDoChangeScripts(); var appliedChangeNumbers = _databaseSchemaVersion.GetAppliedChangeNumbers(); var notAppliedChangeScripts = changeScripts.Where(c => !appliedChangeNumbers.Contains(c.GetId())); var descriptionPrettyPrinter = new DescriptionPrettyPrinter(); var objects = notAppliedChangeScripts .Select(script => new { Id = script.GetId(), Description = descriptionPrettyPrinter.Format(script.GetDescription()), File = script.GetFile() }); WriteObject(objects, true); }
protected override void ProcessRecord() { base.ProcessRecord(); if (!string.IsNullOrEmpty(UndoOutputFile) && string.IsNullOrEmpty(OutputFile)) { WriteError(new ErrorRecord(new PSInvalidOperationException("Missing a file for output (just picked one for undo output)"), "NoUndoOutputFile", ErrorCategory.MetadataError, null)); return; } var infoTextWriter = new LambdaTextWriter(WriteVerbose); TextWriter outputTextWriter; var openedFiles = new List<FileStream>(); try { if (string.IsNullOrEmpty(OutputFile)) { outputTextWriter = new LambdaTextWriter(WriteObject); } else { var outputFile = ToAbsolutePath(OutputFile); WriteObject(String.Format("Writing update script to {0}", outputFile)); var openedFile = File.OpenWrite(outputFile); openedFiles.Add(openedFile); outputTextWriter = new StreamWriter(openedFile, Encoding.UTF8); infoTextWriter = new LambdaTextWriter(WriteObject); } TextWriter undoTextWriter = null; if (!string.IsNullOrEmpty(UndoOutputFile)) { var undoOutputFile = ToAbsolutePath(UndoOutputFile); WriteObject(String.Format("Writing undo update script to {0}", undoOutputFile)); var openedFile = File.OpenWrite(undoOutputFile); openedFiles.Add(openedFile); undoTextWriter = new StreamWriter(openedFile, Encoding.UTF8); } infoTextWriter.WriteLine("dbdeploy v2.12"); List<ChangeScript> changeScripts = new DirectoryScanner(infoTextWriter).GetChangeScriptsForDirectory(new DirectoryInfo(_deltasDirectory)); new PowershellPrintStreamDeployer(_databaseSchemaVersion, new ChangeScriptRepository(changeScripts), outputTextWriter, _dbmsFactory.CreateDbmsSyntax(), UseTransaction, undoTextWriter, infoTextWriter) .DoDeploy(Int32.MaxValue, infoTextWriter); } finally { foreach(var file in openedFiles) { file.Close(); } } }