public DirectToDbApplier(QueryExecuter queryExecuter, IDatabaseSchemaVersionManager schemaVersionManager, QueryStatementSplitter splitter, IDbmsSyntax dbmsSyntax, string changeLogTableName, TextWriter infoTextWriter) { if (queryExecuter == null) { throw new ArgumentNullException("queryExecuter"); } if (schemaVersionManager == null) { throw new ArgumentNullException("schemaVersionManager"); } if (splitter == null) { throw new ArgumentNullException("splitter"); } if (infoTextWriter == null) { throw new ArgumentNullException("infoTextWriter"); } this.queryExecuter = queryExecuter; this.schemaVersionManager = schemaVersionManager; this.splitter = splitter; this.dbmsSyntax = dbmsSyntax; this.changeLogTableName = changeLogTableName; this.infoTextWriter = infoTextWriter; }
/// <summary> /// Initializes a new instance of the <see cref="DatabaseSchemaVersionManager" /> class. /// </summary> /// <param name="queryExecuter">The query executer.</param> /// <param name="syntax">The syntax.</param> /// <param name="changeLogTableName">Name of the change log table.</param> /// <param name="autoCreateChangeLogTable">if set to <c>true</c> the change log table will automatically be created.</param> public DatabaseSchemaVersionManager(QueryExecuter queryExecuter, IDbmsSyntax syntax, string changeLogTableName, bool autoCreateChangeLogTable) { this.syntax = syntax; this.queryExecuter = queryExecuter; this.changeLogTableName = changeLogTableName; this.AutoCreateChangeLogTable = autoCreateChangeLogTable; }
public DirectToDbApplier( QueryExecuter queryExecuter, DatabaseSchemaVersionManager schemaVersionManager, QueryStatementSplitter splitter, IDbmsSyntax dbmsSyntax, string changeLogTableName, TextWriter infoTextWriter) { if (queryExecuter == null) throw new ArgumentNullException("queryExecuter"); if (schemaVersionManager == null) throw new ArgumentNullException("schemaVersionManager"); if (splitter == null) throw new ArgumentNullException("splitter"); if (infoTextWriter == null) throw new ArgumentNullException("infoTextWriter"); this.queryExecuter = queryExecuter; this.schemaVersionManager = schemaVersionManager; this.splitter = splitter; this.dbmsSyntax = dbmsSyntax; this.changeLogTableName = changeLogTableName; this.infoTextWriter = infoTextWriter; }
public TemplateBasedApplier( TextWriter writer, IDbmsSyntax syntax, string changeLogTableName, string delimiter, IDelimiterType delimiterType, DirectoryInfo templateDirectory) { if (writer == null) { throw new ArgumentNullException("writer"); } if (syntax == null) { throw new ArgumentNullException("syntax"); } this.writer = writer; this.syntax = syntax; this.delimiter = delimiter; this.changeLogTableName = changeLogTableName; this.delimiterType = delimiterType ?? new NormalDelimiter(); this.templateDirectory = templateDirectory; }
protected void SetUp() { var factory = new DbmsFactory(Dbms, ConnectionString); var executer = new QueryExecuter(factory); this.syntax = factory.CreateDbmsSyntax(); databaseSchemaVersion = new DatabaseSchemaVersionManager(executer, this.syntax, TableName); }
protected override void SetUp() { var factory = new DbmsFactory(Dbms, firebirdConnectionString, firebirdSqlDataFirebirdClient); var executer = new QueryExecuter(factory); this.syntax = factory.CreateDbmsSyntax(); databaseSchemaVersion = new DatabaseSchemaVersionManager(executer, this.syntax, TableName); }
public UndoTemplateBasedApplier( TextWriter writer, IDbmsSyntax syntax, string changeLogTableName, string delimiter, IDelimiterType delimiterType, DirectoryInfo templateDirectory) : base(writer, syntax, changeLogTableName, delimiter, delimiterType, templateDirectory) { }
protected override void SetUp() { var factory = new DbmsFactory(Dbms, ConnectionString, mySqlDataDll); var executer = new QueryExecuter(factory); this.syntax = factory.CreateDbmsSyntax(); syntax.SetDefaultDatabaseName(connectionString); databaseSchemaVersion = new DatabaseSchemaVersionManager(executer, this.syntax, TableName); }
public DirectToDbApplierAccessor( QueryExecuter queryExecuter, DatabaseSchemaVersionManager schemaVersionManager, QueryStatementSplitter splitter, IDbmsSyntax dbmsSyntax, string changeLogTableName, TextWriter infoTextWriter) : base(queryExecuter, schemaVersionManager, splitter, dbmsSyntax, changeLogTableName, infoTextWriter) { }
public ToPrintStreamDeployer(DatabaseSchemaVersionManager schemaManager, DirectoryInfo dir, TextWriter outputPrintStream, IDbmsSyntax dbmsSyntax, bool useTransaction, TextWriter undoOutputPrintStream) { this.schemaManager = schemaManager; this.dir = dir; doOutputPrintStream = outputPrintStream; this.dbmsSyntax = dbmsSyntax; this.useTransaction = useTransaction; this.undoOutputPrintStream = undoOutputPrintStream; }
public ChangeScriptExecuter(TextWriter printStream, IDbmsSyntax dbmsSyntax, bool useTransaction) { output = printStream; _dbmsSyntax = dbmsSyntax; _useTransaction = useTransaction; /* Header data: information and control settings for the entire script. */ DateTime now = DateTime.Now; output.WriteLine("-- Script generated at " + now.ToString(new DateTimeFormatInfo().SortableDateTimePattern)); output.WriteLine(); output.WriteLine(dbmsSyntax.GenerateScriptHeader()); }
public ChangeScriptExecuter(TextWriter printStream, IDbmsSyntax dbmsSyntax, bool useTransaction, Encoding encoding) { output = printStream; _dbmsSyntax = dbmsSyntax; _useTransaction = useTransaction; _encoding = encoding; /* Header data: information and control settings for the entire script. */ DateTime now = DateTime.Now; output.WriteLine("-- Script generated at " + now.ToString(new DateTimeFormatInfo().SortableDateTimePattern)); output.WriteLine(); output.WriteLine(dbmsSyntax.GenerateScriptHeader()); }
public PowershellPrintStreamDeployer(DatabaseSchemaVersionManager schemaManager, ChangeScriptRepository repository, TextWriter outputPrintStream, IDbmsSyntax dbmsSyntax, bool useTransaction, TextWriter undoOutputPrintStream, TextWriter infoPrintStream) { this.schemaManager = schemaManager; this.doOutputPrintStream = outputPrintStream; this.dbmsSyntax = dbmsSyntax; this.useTransaction = useTransaction; this.undoOutputPrintStream = undoOutputPrintStream; this.infoPrintStream = infoPrintStream; this.repository = repository; }
public void nao_criar_tabela_changelog() { const string conteudoSql = "Create Table tabelaTeste (id int not null, name varchar(45) not null, primary key (id));"; var changeScript = new ChangeScript("1.0.0.0", 1); splitter.Setup(s => s.Split(It.IsAny <string>())).Returns <string>(s => new[] { s }); dbmsSyntax = new MsSqlDbmsSyntax(); var changeLogTableSqlScript = dbmsSyntax.CreateChangeLogTableSqlScript(ChangeLogTableName); var directToDbApplier = new DirectToDbApplier(queryExecuter.Object, schemaVersionManager.Object, splitter.Object, dbmsSyntax, ChangeLogTableName, System.Console.Out); directToDbApplier.ApplyScriptContent(changeScript, conteudoSql, false); schemaVersionManager.Verify(x => x.RecordScriptStatus(changeScript, ScriptStatus.SucessRevisedUser, It.IsAny <string>()), Times.Once); queryExecuter.Verify(x => x.Execute(changeLogTableSqlScript), Times.Never()); }
public override bool Execute() { bool result = false; try { LogTaskProperties(); using (TextWriter outputPrintStream = new StreamWriter(outputfile.FullName)) { TextWriter undoOutputPrintStream = null; if (undoOutputfile != null) { undoOutputPrintStream = new StreamWriter(undoOutputfile.FullName); } DbmsFactory factory = new DbmsFactory(dbType, dbConnection); IDbmsSyntax dbmsSyntax = factory.CreateDbmsSyntax(DatabaseSchemaVersionManager.DEFAULT_CHANGE_OWNER); DatabaseSchemaVersionManager databaseSchemaVersion = new DatabaseSchemaVersionManager(factory, deltaSet, null); ToPrintStreamDeployer toPrintSteamDeployer = new ToPrintStreamDeployer(databaseSchemaVersion, dir, outputPrintStream, dbmsSyntax, useTransaction, undoOutputPrintStream); toPrintSteamDeployer.DoDeploy(lastChangeToApply); if (undoOutputPrintStream != null) { undoOutputPrintStream.Close(); } } result = true; } catch (DbDeployException ex) { Log.LogErrorFromException(ex, true); Console.Error.WriteLine(ex.Message); } catch (Exception ex) { Log.LogErrorFromException(ex, true); Console.Error.WriteLine("Failed to apply changes: " + ex.Message); Console.Error.WriteLine("Stack Trace:"); Console.Error.Write(ex.StackTrace); } return(result); }
protected override void ExecuteTask() { try { Encoding encoding = new OutputFileEncoding(outputFileEncoding).AsEncoding(); using (TextWriter outputPrintStream = new StreamWriter(outputfile.FullName, true, encoding)) { TextWriter undoOutputPrintStream = null; if (undoOutputfile != null) { undoOutputPrintStream = new StreamWriter(undoOutputfile.FullName, true, encoding); } DbmsFactory factory = new DbmsFactory(dbType, dbConnection); DatabaseSchemaVersionManager databaseSchemaVersion = new DatabaseSchemaVersionManager(factory, deltaSet, GetCurrentDbVersion(), changeLogTable, changeOwner); IDbmsSyntax dbmsSyntax = factory.CreateDbmsSyntax(changeOwner); ToPrintStreamDeployer toPrintSteamDeployer = new ToPrintStreamDeployer(databaseSchemaVersion, dir, outputPrintStream, dbmsSyntax, useTransaction, undoOutputPrintStream); toPrintSteamDeployer.DoDeploy(lastChangeToApply); if (undoOutputPrintStream != null) { undoOutputPrintStream.Close(); } } } catch (DbDeployException ex) { Console.Error.WriteLine(ex.Message); throw new BuildException(ex.Message); } catch (Exception ex) { Console.Error.WriteLine("Failed to apply changes: " + ex); Console.Error.WriteLine("Stack Trace:"); Console.Error.Write(ex.StackTrace); throw new BuildException(ex.Message); } }
public void SetUp() { IDbmsSyntax syntax = null; QueryExecuter nullExecuter = null; var factory = new Mock <DbmsFactory>("mssql", string.Empty); factory.Setup(f => f.CreateConnection()).Returns(new Mock <IDbConnection>().Object); factory.Setup(f => f.CreateDbmsSyntax()).Returns(syntax); this.queryExecuter = new Mock <QueryExecuter>(factory.Object); this.schemaVersionManager = new Mock <DatabaseSchemaVersionManager>(nullExecuter, syntax, "empty", false); this.splitter = new Mock <QueryStatementSplitter>(); this.applier = new DirectToDbApplierAccessor( this.queryExecuter.Object, this.schemaVersionManager.Object, this.splitter.Object, System.Console.Out); }
/// <summary> /// Initializes a new instance of the <see cref="SqlCmdApplier" /> class. /// </summary> /// <param name="connectionString">The database connection string.</param> /// <param name="schemaVersionManager">The schema version manager.</param> /// <param name="dbmsSyntax">Database syntax</param> /// <param name="changeLogTableName">ChangeLog table name</param> /// <param name="infoTextWriter">The info text writer.</param> public SqlCmdApplier( string connectionString, DatabaseSchemaVersionManager schemaVersionManager, IDbmsSyntax dbmsSyntax, string changeLogTableName, TextWriter infoTextWriter) { if (string.IsNullOrWhiteSpace(connectionString)) { throw new ArgumentNullException("connectionString"); } if (schemaVersionManager == null) { throw new ArgumentNullException("schemaVersionManager"); } if (dbmsSyntax == null) { throw new ArgumentNullException("dbmsSyntax"); } if (changeLogTableName == null) { throw new ArgumentNullException("changeLogTableName"); } if (infoTextWriter == null) { throw new ArgumentNullException("infoTextWriter"); } this.schemaVersionManager = schemaVersionManager; this.dbmsSyntax = dbmsSyntax; this.changeLogTableName = changeLogTableName; this.infoTextWriter = infoTextWriter; this.connectionString = connectionString; }
public void SetUp() { dbmsSyntax = null; QueryExecuter nullExecuter = null; var factory = new Mock<DbmsFactory>("mssql", string.Empty, null); factory.Setup(f => f.CreateConnection()).Returns(new Mock<IDbConnection>().Object); factory.Setup(f => f.CreateDbmsSyntax()).Returns(dbmsSyntax); this.queryExecuter = new Mock<QueryExecuter>(factory.Object); this.schemaVersionManager = new Mock<DatabaseSchemaVersionManager>(nullExecuter, dbmsSyntax, "empty"); this.splitter = new Mock<QueryStatementSplitter>(); this.applier = new DirectToDbApplierAccessor( this.queryExecuter.Object, this.schemaVersionManager.Object, this.splitter.Object, dbmsSyntax, ChangeLogTableName, System.Console.Out); }
public TemplateBasedApplier( TextWriter writer, IDbmsSyntax syntax, string changeLogTableName, string delimiter, IDelimiterType delimiterType, DirectoryInfo templateDirectory) { if (writer == null) throw new ArgumentNullException("writer"); if (syntax == null) throw new ArgumentNullException("syntax"); this.writer = writer; this.syntax = syntax; this.delimiter = delimiter; this.changeLogTableName = changeLogTableName; this.delimiterType = delimiterType ?? new NormalDelimiter(); this.templateDirectory = templateDirectory; }
public void nao_criar_tabela_changelog() { const string conteudoSql = "Create Table tabelaTeste (id int not null, name varchar(45) not null, primary key (id));"; var changeScript = new ChangeScript("1.0.0.0", 1); splitter.Setup(s => s.Split(It.IsAny<string>())).Returns<string>(s => new[] { s }); dbmsSyntax = new MsSqlDbmsSyntax(); var changeLogTableSqlScript = dbmsSyntax.CreateChangeLogTableSqlScript(ChangeLogTableName); var directToDbApplier = new DirectToDbApplier(queryExecuter.Object, schemaVersionManager.Object, splitter.Object, dbmsSyntax, ChangeLogTableName, System.Console.Out); directToDbApplier.ApplyScriptContent(changeScript, conteudoSql, false); schemaVersionManager.Verify(x => x.RecordScriptStatus(changeScript, ScriptStatus.SucessRevisedUser, It.IsAny<string>()), Times.Once); queryExecuter.Verify(x => x.Execute(changeLogTableSqlScript), Times.Never()); }
public StubSchemaManager(IDbmsSyntax syntax, bool changeLogTableExists) : base(null, syntax, "ChangeLog") { this.changeLogTableExists = changeLogTableExists; }
public DatabaseSchemaVersionManager(QueryExecuter queryExecuter, IDbmsSyntax syntax, string changeLogTableName) { this.syntax = syntax; this.queryExecuter = queryExecuter; this.changeLogTableName = changeLogTableName; }
public ChangeScriptExecuter(TextWriter printStream, IDbmsSyntax dbmsSyntax, bool useTransaction) : this(printStream, dbmsSyntax, useTransaction, DefaultEncoding) {}
public StubSchemaManager(IDbmsSyntax syntax) : base(null, syntax, "changelog") { }
public StubSchemaManager(IDbmsSyntax syntax) : base(null, syntax, "ChangeLog", true) { }