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;
 }
Exemple #3
0
        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());
        }
Exemple #4
0
        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);
            }
        }
Exemple #5
0
        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;
        }
Exemple #10
0
        public bool HasPhaseExecuted(SqlScriptPhase requestedPhase)
        {
            var scriptBlock = GetSqlCommandBlock(requestedPhase);

            return(scriptBlock.IsExecuted);
        }
Exemple #11
0
 public bool HasSqlScriptPhase(SqlScriptPhase requestedPhase)
 {
     return(GetSqlCommandBlock(requestedPhase) != null);
 }
Exemple #12
0
 private SqlCommandBlock GetSqlCommandBlock(SqlScriptPhase requestedPhase)
 {
     return((SqlCommandBlock)_scriptBlocks
            .FirstOrDefault(sb => sb is SqlCommandBlock && ((SqlCommandBlock)sb).Phase == requestedPhase));
 }
Exemple #13
0
 public SqlCommandBlock(string keyword, string text, SqlScriptPhase phase) : base(keyword, text)
 {
     _commandText = string.Empty;
     Phase        = phase;
     IsExecuted   = false;
 }
        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);

                }
            }
        }
        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);
            }
        }