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