public override string BuildSql(SqlOptions sqlOptions) { var value = Value.BuildSql(sqlOptions); var @as = As; if (@as == null) { return(value); } var command = sqlOptions.Command("CAST"); var asCommand = sqlOptions.Command("AS"); return($"{command}({value} {asCommand} {@as})"); }
public override string BuildSql(SqlOptions sqlOptions) { var left = LeftOperand.BuildSql(sqlOptions, FlowOptions.Construct(this)); var right = RightOperand.BuildSql(sqlOptions, FlowOptions.Construct(this)); switch (sqlOptions.DatabaseType) { case SqlDatabaseType.Postgres: return($"{left} = {sqlOptions.Command("ANY")}({right})"); default: return($"{left} {sqlOptions.Command("IN")} ({right})"); } }
public override string BuildSql(SqlOptions sqlOptions) { var entity = Entity; var command = sqlOptions.Command(Command); return($"{command}({entity})"); }
public override string BuildSql(SqlOptions sqlOptions) { var command = sqlOptions.Command("ON"); var property = Property.BuildSql(sqlOptions, FlowOptions.Construct(this)); return($"{command} {property}"); }
public override string BuildSql(SqlOptions sqlOptions) { var operand = _selectBuilder.BuildSql(((SqlOptions)sqlOptions.Clone()).Inlined()); var command = sqlOptions.Command("EXISTS"); return($"{command}({operand})"); }
public override string BuildSql(SqlOptions sqlOptions) { var command = sqlOptions.Command("UPDATE"); var tableName = TableName.BuildSql(sqlOptions, FlowOptions.Construct(this)); return($"{command} {tableName}"); }
public override string BuildSql(SqlOptions sqlOptions) { var operand = Operand.BuildSql(sqlOptions, FlowOptions.Construct(this)); var command = sqlOptions.Command("IS NULL"); return($"{operand} {command}"); }
public override string BuildSql(SqlOptions sqlOptions) { var tableName = Entity.BuildSql(sqlOptions, FlowOptions.Construct(this)); var command = sqlOptions.Command("INSERT INTO"); return($"{command} {tableName}"); }
public override string BuildSql(SqlOptions sqlOptions) { var orders = Entities.Select(s => s.BuildSql(sqlOptions, FlowOptions.Construct(this))); var order = string.Join($",{sqlOptions.NewLine()}{sqlOptions.Indent()}", orders); return($"{sqlOptions.Command("ORDER BY")}{sqlOptions.NewLine()}{sqlOptions.Indent()}{order}"); }
public override string BuildSql(SqlOptions sqlOptions) { var columns = string.Join($",{sqlOptions.NewLine()}{sqlOptions.Indent()}", Entities.Select(e => e.BuildSql(sqlOptions, FlowOptions.Construct(this)))); var command = sqlOptions.Command("VALUES"); return $"{command} ({sqlOptions.NewLine()}{sqlOptions.Indent()}{columns}{sqlOptions.NewLine()})"; }
public override string BuildSql(SqlOptions sqlOptions) { var tables = string.Join(", ", Entities.Select(e => e.BuildSql(sqlOptions, FlowOptions.Construct(this)))); var command = sqlOptions.Command("FROM"); return($"{command} {tables}"); }
public override string BuildSql(SqlOptions sqlOptions) { string joinType; switch (JoinType) { case JoinType.Inner: joinType = "INNER JOIN"; break; case JoinType.Left: joinType = "LEFT JOIN"; break; case JoinType.Right: joinType = "RIGHT JOIN"; break; case JoinType.FullOuter: joinType = "FULL OUTER JOIN"; break; default: throw new ArgumentException(nameof(JoinType)); } var command = sqlOptions.Command(joinType); var table = TableEntity.BuildSql(sqlOptions, FlowOptions.Construct(this)); var on = OnBlock.BuildSql(sqlOptions, FlowOptions.Construct(this)); return($"{command} {table} {on}"); }
public override string BuildSql(SqlOptions sqlOptions) { var entities = Entities.Select(c => $"{c.BuildSql(sqlOptions, FlowOptions.Construct(this))}"); var columns = string.Join($",{sqlOptions.NewLine()}{sqlOptions.Indent()}", entities); var command = sqlOptions.Command("SET"); return($"{command}{sqlOptions.NewLine()}{sqlOptions.Indent()}{columns}"); }
public override string BuildSql(SqlOptions sqlOptions) { var left = LeftOperand.BuildSql(sqlOptions, FlowOptions.Construct(this)); var right = RightOperand.BuildSql(sqlOptions, FlowOptions.Construct(this)); var command = sqlOptions.Command("LIKE"); return($"{left} {command} {right}"); }
public override string BuildSql(SqlOptions sqlOptions) { var columnName = ColumnName; var propertyName = PropertyName; var command = sqlOptions.Command("AS"); return($"{columnName} {command} {propertyName}"); }
public override string BuildSql(SqlOptions sqlOptions) { var operands = string.Join(", ", Operands.Where(operand => operand.Present(sqlOptions)) .Select(operand => operand.BuildSql(sqlOptions, FlowOptions.Construct(this)))); var command = sqlOptions.Command(Command); return($"{command}({operands})"); }
public override string BuildSql(SqlOptions sqlOptions) { var column = ColumnName; string command; switch (sqlOptions.DatabaseType) { case SqlDatabaseType.MySql: case SqlDatabaseType.MariaDb: command = sqlOptions.Command("VALUES"); return($"{command}({column})"); default: command = sqlOptions.Command("EXCLUDED"); return($"{command}.{column}"); } }
public override string BuildSql(SqlOptions sqlOptions) { var operators = Entities.Select(o => o.BuildSql(sqlOptions, FlowOptions.Construct(this))); var command = sqlOptions.Command(Command); var separator = GetSeparator(sqlOptions); var conditions = string.Join($"{separator}{command} ", operators); return($"{conditions}"); }
public override string BuildSql(SqlOptions sqlOptions) { string command; switch (sqlOptions.DatabaseType) { case SqlDatabaseType.MsSql: command = sqlOptions.Command("FETCH NEXT"); break; default: command = sqlOptions.Command("LIMIT"); break; } var limitBy = LimitBy?.BuildSql(sqlOptions, FlowOptions.Construct(this)); return($"{command} {limitBy}"); }
public override string BuildSql(SqlOptions sqlOptions) { switch (sqlOptions.DatabaseType) { case SqlDatabaseType.MsSql: return("1"); default: return(sqlOptions.Command("TRUE")); } }
public override string BuildSql(SqlOptions sqlOptions) { var tableColumnName = TableColumn.BuildSql(sqlOptions, FlowOptions.Construct(this)); if (Value?.Present(sqlOptions) != true) { return($"{tableColumnName}"); } var property = Value.BuildSql(sqlOptions, FlowOptions.Construct(this)); var command = sqlOptions.Command("AS"); return($"{tableColumnName} {command} {property}"); }
public override string BuildSql(SqlOptions sqlOptions) { var properties = string.Join($",{sqlOptions.NewLine()}{sqlOptions.Indent()}", Entities.Select(e => e.BuildSql(sqlOptions, FlowOptions.Construct(this)))); string command; switch (sqlOptions.DatabaseType) { case SqlDatabaseType.Postgres: case SqlDatabaseType.SqLite: command = sqlOptions.Command("DO UPDATE SET"); break; case SqlDatabaseType.MySql: case SqlDatabaseType.MariaDb: command = sqlOptions.Command("UPDATE"); break; default: return(null); } return($"{command}{sqlOptions.NewLine()}{sqlOptions.Indent()}{properties}"); }
public override string BuildSql(SqlOptions sqlOptions) { switch (sqlOptions.DatabaseType) { case SqlDatabaseType.Postgres: { var left = LeftOperand.BuildSql(sqlOptions, FlowOptions.Construct(this)); var right = RightOperand.BuildSql(sqlOptions, FlowOptions.Construct(this)); var command = sqlOptions.Command("ILIKE"); return($"{left} {command} {right}"); } default: { return(new LikeOperator(LeftOperand.Lower(), RightOperand.Lower()).BuildSql(sqlOptions, FlowOptions.Construct(this))); } } }
public override string BuildSql(SqlOptions sqlOptions) { AndOperator andBlock; if (Entities.Count == 1 && Entities[0] is AndOperator andOperator) { andBlock = andOperator; } else { andBlock = new AndOperator(Entities); } andBlock.Indent = true; andBlock.NewLine = true; var conditions = andBlock.BuildSql(sqlOptions, FlowOptions.Construct(this)); var command = sqlOptions.Command("WHERE"); return($"{command}{sqlOptions.NewLine()}{sqlOptions.Indent(" ")}{conditions}"); }
public override string BuildSql(SqlOptions sqlOptions) { string dir; switch (Direction) { case OrderDirection.Asc: dir = "ASC"; break; case OrderDirection.Desc: dir = "DESC"; break; default: return(null); } var command = sqlOptions.Command(dir); var orderItem = OrderItemOperand?.BuildSql(sqlOptions, FlowOptions.Construct(this)) ?? throw new ArgumentException(nameof(OrderItemOperand)); return($"{orderItem} {command}"); }
public override string BuildSql(SqlOptions sqlOptions) { var columns = string.Join($",{sqlOptions.NewLine()}{sqlOptions.Indent()}", Entities.Select(e => e.BuildSql(sqlOptions, FlowOptions.Construct(this)))); return($"{sqlOptions.Command("SELECT")}{sqlOptions.NewLine()}{sqlOptions.Indent()}{columns}"); }
public override string BuildSql(SqlOptions sqlOptions) { string command = sqlOptions.Command("DO NOTHING"); return($"{command}"); }
public override string BuildSql(SqlOptions sqlOptions) { var offset = Offset?.BuildSql(sqlOptions, FlowOptions.Construct(this)); return($"{sqlOptions.Command("OFFSET")} {offset}"); }