private void ExecSql(SourceScript script, SqlScriptPhase phase) { if (script.HasPhaseExecuted(phase)) { return; } var sql = script.RequestSqlScriptPhase(phase); if (sql == null) { return; } sql = PhaseDeploymentComment + sql; var configuration = script.GetConfiguration(); using (var command = _connectionManager.CreateCommand(sql)) { foreach (var catalog in GetCatalogs(script)) { _logger.PostEntryNoTimestamp(" {0}", catalog); if (configuration == null) { command.Execute(catalog); } else { command.Execute(catalog, configuration.Settings.Timeout); } } } }
public SqlCommandBlock(string keyword, string text, SqlScriptPhase phase) : base(keyword, text) { _commandText = string.Empty; Phase = phase; IsExecuted = false; }
public string RequestSqlScriptPhase(SqlScriptPhase requestedPhase) { var scriptBlock = GetSqlCommandBlock(requestedPhase); if (scriptBlock == null) { throw new InvalidOperationException("No script block available for requested phase " + requestedPhase); } return(scriptBlock.RequestForExecution()); }
private void DeployPhase(SqlScriptPhase sqlScriptPhase) { _logger.PostEntryNoTimestamp("{0} {1} ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{0}", Environment.NewLine, sqlScriptPhase); _writer.WriteLine("-- deploying {0}", sqlScriptPhase); _writer.WriteLine(); foreach (var script in Project.NonPriorityScripts.Where(s => s.HasSqlScriptPhase(sqlScriptPhase))) { _logger.PostEntry(Verbosity.Important, "{0} {1}", script.Name, sqlScriptPhase); WriteScript(script, sqlScriptPhase); } }
private void WriteScript(SourceScript script, SqlScriptPhase phase) { if (script.HasPhaseExecuted(phase)) { return; } var sql = script.RequestSqlScriptPhase(phase); if (sql == null) { return; } sql = PhaseDeploymentComment + sql; foreach (var catalog in GetCatalogs(script)) { _logger.PostEntryNoTimestamp(" {0}", catalog); WriteCommand(catalog, sql); } }
private Returned DeployPhase(SqlScriptPhase sqlScriptPhase) { _logger.PostEntryNoTimestamp("{0} {1} ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{0}", Environment.NewLine, sqlScriptPhase); foreach (var script in Project.NonPriorityScripts.Where(s => s.HasSqlScriptPhase(sqlScriptPhase))) { _logger.PostEntry(Verbosity.Important, "{0} {1}", script.Name, sqlScriptPhase); try { ExecSql(script, sqlScriptPhase); } catch (Exception ex) { _logger.PostException(ex); return(Returned.Failure); } } return(Returned.Success); }
private void ExecSql(SourceScript script, SqlScriptPhase phase) { if (script.HasPhaseExecuted(phase)) return; var sql = script.RequestSqlScriptPhase(phase); if (sql == null) return; sql = PhaseDeploymentComment + sql; var configuration = script.GetConfiguration(); using (var command = _connectionManager.CreateCommand(sql)) { foreach (var catalog in GetCatalogs(script)) { _logger.PostEntryNoTimestamp(" {0}", catalog); if (configuration == null) command.Execute(catalog); else command.Execute(catalog, configuration.Settings.Timeout); } } }
private Returned DeployPriorityScripts(SqlScriptPhase[] phases) { _logger.PostEntryNoTimestamp("{0} Priority Scripts ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{0}", Environment.NewLine); foreach (var script in Project.PriorityScripts) { _logger.PostEntry(Verbosity.Important, script.Name); foreach (var phase in phases) { if (script.HasSqlScriptPhase(phase) == false) continue; _logger.PostEntryNoTimestamp(" {0}", phase); try { ExecSql(script, phase); } catch (Exception ex) { _logger.PostException(ex); return Returned.Failure; } } } return Returned.Success; }
private Returned DeployPhase(SqlScriptPhase sqlScriptPhase) { _logger.PostEntryNoTimestamp("{0} {1} ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{0}", Environment.NewLine, sqlScriptPhase); foreach (var script in Project.NonPriorityScripts.Where(s => s.HasSqlScriptPhase(sqlScriptPhase))) { _logger.PostEntry(Verbosity.Important, "{0} {1}", script.Name, sqlScriptPhase); try { ExecSql(script, sqlScriptPhase); } catch (Exception ex) { _logger.PostException(ex); return Returned.Failure; } } return Returned.Success; }
public bool HasPhaseExecuted(SqlScriptPhase requestedPhase) { var scriptBlock = GetSqlCommandBlock(requestedPhase); return(scriptBlock.IsExecuted); }
public bool HasSqlScriptPhase(SqlScriptPhase requestedPhase) { return(GetSqlCommandBlock(requestedPhase) != null); }
private SqlCommandBlock GetSqlCommandBlock(SqlScriptPhase requestedPhase) { return((SqlCommandBlock)_scriptBlocks .FirstOrDefault(sb => sb is SqlCommandBlock && ((SqlCommandBlock)sb).Phase == requestedPhase)); }
private void WriteScript(SourceScript script, SqlScriptPhase phase) { if (script.HasPhaseExecuted(phase)) return; var sql = script.RequestSqlScriptPhase(phase); if (sql == null) return; sql = PhaseDeploymentComment + sql; foreach (var catalog in GetCatalogs(script)) { _logger.PostEntryNoTimestamp(" {0}", catalog); WriteCommand(catalog, sql); } }
private void DeployPriorityScripts(SqlScriptPhase[] phases) { _logger.PostEntryNoTimestamp("{0} Priority Scripts ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{0}", Environment.NewLine); foreach (var script in Project.PriorityScripts) { _logger.PostEntry(Verbosity.Important, script.Name); foreach (var phase in phases) { if (script.HasSqlScriptPhase(phase) == false) continue; _logger.PostEntryNoTimestamp(" {0}", phase); WriteScript(script, phase); } } }