use crate::ast::{BinaryOp, Expr};
pub fn now() -> Expr {
Expr::FunctionCall {
name: "NOW".to_string(),
args: vec![],
alias: None,
}
}
pub fn interval(duration: &str) -> Expr {
use crate::ast::Value;
Expr::SpecialFunction {
name: "INTERVAL".to_string(),
args: vec![(
None,
Box::new(Expr::Literal(Value::String(duration.to_string()))),
)],
alias: None,
}
}
pub fn now_minus(duration: &str) -> Expr {
Expr::Binary {
left: Box::new(now()),
op: BinaryOp::Sub,
right: Box::new(interval(duration)),
alias: None,
}
}
pub fn now_plus(duration: &str) -> Expr {
Expr::Binary {
left: Box::new(now()),
op: BinaryOp::Add,
right: Box::new(interval(duration)),
alias: None,
}
}