use super::Dialect;
use super::ToSql;
impl<'a> ToSql<'a> for crate::expr::Expr<'a> {
#[inline]
fn build<D: Dialect>(self, sql: &mut String, args: &mut Vec<crate::value::Value<'a>>) {
match self {
crate::expr::Expr::Literal(val) => val.build::<D>(sql, args),
crate::expr::Expr::Column(val) => val.build::<D>(sql, args),
crate::expr::Expr::FuncCall(val) => val.build::<D>(sql, args),
crate::expr::Expr::Prefix(op, val) => {
sql.push_str(op);
sql.push(' ');
val.build::<D>(sql, args);
}
crate::expr::Expr::Infix(left, op, right) => {
left.build::<D>(sql, args);
sql.push(' ');
sql.push_str(op);
sql.push(' ');
right.build::<D>(sql, args);
}
crate::expr::Expr::Postfix(val, op) => {
val.build::<D>(sql, args);
sql.push(' ');
sql.push_str(op);
}
crate::expr::Expr::Paren(val) => {
sql.push('(');
val.build::<D>(sql, args);
sql.push(')');
}
crate::expr::Expr::SubQuery(val) => {
sql.push('(');
val.build::<D>(sql, args);
sql.push(')');
}
}
}
}