Exemplo n.º 1
0
        public override IRuleResult Execute(ISqlQuery sqlQuery)
        {
            if (sqlQuery is not AlterTable)
            {
                throw new ArgumentOutOfRangeException("sqlQuery is not ALTER TABLE");
            }

            var sb = new StringBuilder();

            var tableName = sqlQuery.Parameters.FirstOrDefault();

            if (tableName is not TableNameParameter)
            {
                throw new ArgumentNullException("first parameter must be table name !!!");
            }

            sb.Append($"{Prefix} TABLE [{tableName.Name}].[{tableName.Value}]\n\t");

            foreach (var param in sqlQuery.Parameters.Skip(1))
            {
                if (param is ColumnParameter)
                {
                    sb.Append($"ADD COLUMN {param}");
                }
                else
                {
                    sb.Append($"{param}");
                }
            }
            return(DefaultRuleResult.Wrap(sb.ToString()));
        }
Exemplo n.º 2
0
        public override IRuleResult Execute(ISqlQuery sqlQuery)
        {
            if (sqlQuery is not CreateTable)
            {
                throw new InvalidCastException("sqlQuery is not CREATE TABLE");
            }

            var query = (CreateTable)sqlQuery;
            var sb    = new StringBuilder();

            var tableName = query.Parameters.FirstOrDefault();

            if (tableName is not TableNameParameter)
            {
                throw new ArgumentException("first parameter must be name of table");
            }

            sb.Append($"{Prefix} TABLE ").Append($"[{tableName.Name}].[{tableName.Value}]");

            if (query.Parameters.Count < 2)
            {
                throw new Exception("cannot create empty table");
            }

            sb.Append(' ').Append("(\n");
            var columns = query.Parameters.Skip(1).AsStringWithDelimiter(",\n\t");

            sb.Append(columns).Append("\n)");
            return(DefaultRuleResult.Wrap(sb.ToString()));
        }
Exemplo n.º 3
0
        public IRuleResult Execute(ISqlQuery sqlQuery)
        {
            if (sqlQuery is not InsertQuery insertQuery)
            {
                throw new ArgumentException("There is no insert query");
            }

            var sb = new StringBuilder();

            if (insertQuery.Parameters.First() is not TableNameParameter table)
            {
                throw new ArgumentException("first parameter must be table name");
            }

            sb.Append($"{insertQuery.Name} INTO {table} (")
            .Append(
                insertQuery.Columns
                .AsStringWithDelimiter(", ", p => $"[{p.Name}]"))
            .Append(") VALUES (")
            .Append(
                insertQuery.Parameters.OfType <ValueParameter>()
                .AsStringWithDelimiter(", ", p => $"'{p.Value}'"))
            .Append(")");

            return(DefaultRuleResult.Wrap(sb.ToString()));
        }
        public IRuleResult Execute(ISqlQuery sqlQuery)
        {
            if (sqlQuery is not InsertQuery insertQuery)
            {
                throw new ArgumentException("query is not insert query!!!");
            }

            foreach (var column in sqlQuery.Parameters.OfType <ColumnParameter>())
            {
                insertQuery.Columns.Add(column);
            }

            return(DefaultRuleResult.Wrap(Prefix));
        }
Exemplo n.º 5
0
        public IRuleResult Execute(ISqlQuery sqlQuery)
        {
            var sb = new StringBuilder();

            sb.Append(sqlQuery.ToString());

            // if query has any number of params
            // this will concat them together
            if (sqlQuery.Parameters.Any())
            {
                var param = sqlQuery.Parameters.Aggregate(" ", (acc, param) => acc + param + ", ");
                sb.Append(
                    //take all chars except last 2 chars because they are ", "
                    param.Take(param.Length - 2).Aggregate("", (acc, c) => acc + c));
            }

            return(DefaultRuleResult.Wrap(sb.ToString()));
        }