use crate::sqlite::schema::field::Field;
use super::expr::{
Expr,
BinOp,
};
pub fn set_field(f: &Field) -> (Field, Expr) {
(f.clone(), field_param(f))
}
pub fn field_param(f: &Field) -> Expr {
Expr::Param {
name: f.id.clone(),
type_: f.type_.type_.clone(),
}
}
pub fn eq_field(f: &Field) -> Expr {
Expr::BinOp {
left: Box::new(Expr::Field(f.clone())),
op: BinOp::Equals,
right: Box::new(Expr::Param {
name: f.id.clone(),
type_: f.type_.type_.clone(),
}),
}
}
pub fn gt_field(f: &Field) -> Expr {
Expr::BinOp {
left: Box::new(Expr::Field(f.clone())),
op: BinOp::GreaterThan,
right: Box::new(Expr::Param {
name: f.id.clone(),
type_: f.type_.type_.clone(),
}),
}
}
pub fn gte_field(f: &Field) -> Expr {
Expr::BinOp {
left: Box::new(Expr::Field(f.clone())),
op: BinOp::GreaterThanEqualTo,
right: Box::new(Expr::Param {
name: f.id.clone(),
type_: f.type_.type_.clone(),
}),
}
}
pub fn lt_field(f: &Field) -> Expr {
Expr::BinOp {
left: Box::new(Expr::Field(f.clone())),
op: BinOp::LessThan,
right: Box::new(Expr::Param {
name: f.id.clone(),
type_: f.type_.type_.clone(),
}),
}
}
pub fn lte_field(f: &Field) -> Expr {
Expr::BinOp {
left: Box::new(Expr::Field(f.clone())),
op: BinOp::LessThanEqualTo,
right: Box::new(Expr::Param {
name: f.id.clone(),
type_: f.type_.type_.clone(),
}),
}
}
pub fn expr_and(l: Expr, r: Expr) -> Expr {
Expr::BinOp {
left: Box::new(l),
op: BinOp::And,
right: Box::new(r),
}
}