#[macro_export]
macro_rules! expr {
($table:ident.c.$column:ident) => {
$crate::query::Q::col($table, $table.c.$column)
};
($template:literal) => {
$crate::query::Q::fill($template, vec![])
};
($template:literal, $($arg:expr),+ $(,)?) => {
$crate::query::Q::fill($template, vec![$($arg,)+])
};
($val_expr:expr) => {
$crate::query::Q::val($val_expr)
};
}
#[macro_export]
macro_rules! op {
($op:literal, $table:ident.c.$column:ident) => {
$crate::query::Q::pre_op($op, $crate::query::Q::col($table, $table.c.$column))
};
($op:literal, [$expr:expr]) => {
$crate::query::Q::pre_op($op, $expr)
};
($table:ident.c.$column:ident, $op:literal) => {
$crate::query::Q::post_op($crate::query::Q::col($table, $table.c.$column), $op)
};
([$expr:expr], $op:literal) => {
$crate::query::Q::post_op($expr, $op)
};
($tableL:ident.c.$columnL:ident, $op:literal, $tableR:ident.c.$columnR:ident) => {
$crate::query::Q::op(
$crate::query::Q::col($tableL, $tableL.c.$columnL),
$op,
$crate::query::Q::col($tableR, $tableR.c.$columnR),
)
};
($table:ident.c.$column:ident, $op:literal, [$expr:expr]) => {
$crate::query::Q::op($crate::query::Q::col($table, $table.c.$column), $op, $expr)
};
($table:ident.c.$column:ident, $op:literal, $val_expr:expr) => {
$crate::query::Q::op(
$crate::query::Q::col($table, $table.c.$column),
$op,
$crate::query::Q::val($val_expr),
)
};
}