use serde::{Deserialize, Serialize};
use std::fmt::{Display, Formatter};
#[derive(Default, Debug, Clone, PartialEq, Deserialize, Serialize)]
pub enum Where {
#[default]
Eq,
NotEq,
GreaterThan,
GreaterOrEqualTo,
LesserThan,
LesserOrEqualTo,
Like,
}
impl Display for Where {
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
match self {
Where::Eq => write!(f, "="),
Where::NotEq => write!(f, "!="),
Where::GreaterThan => write!(f, ">"),
Where::GreaterOrEqualTo => write!(f, ">="),
Where::LesserThan => write!(f, "<"),
Where::LesserOrEqualTo => write!(f, "<="),
Where::Like => write!(f, "LIKE"),
}
}
}
#[derive(Default, Debug, Clone, PartialEq, Deserialize, Serialize)]
pub enum Having {
#[default]
Eq,
NotEq,
GreaterThan,
GreaterOrEqualTo,
LesserThan,
LesserOrEqualTo,
Like,
}
impl Display for Having {
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
match self {
Having::Eq => write!(f, "="),
Having::NotEq => write!(f, "!="),
Having::GreaterThan => write!(f, ">"),
Having::GreaterOrEqualTo => write!(f, ">="),
Having::LesserThan => write!(f, "<"),
Having::LesserOrEqualTo => write!(f, "<="),
Having::Like => write!(f, "LIKE"),
}
}
}
#[derive(Default, Debug, Clone, PartialEq, Deserialize, Serialize)]
pub enum Function {
#[default]
Null,
Count { is_distinct: bool },
Sum,
Avg,
Min,
Max,
}
impl Display for Function {
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
match self {
Function::Null => write!(f, ""),
Function::Count { .. } => write!(f, "COUNT"),
Function::Sum => write!(f, "SUM"),
Function::Avg => write!(f, "AVG"),
Function::Min => write!(f, "MIN"),
Function::Max => write!(f, "MAX"),
}
}
}