use crate::prelude::*;
#[cfg_attr(feature = "serde", derive(Deserialize, Serialize))]
#[derive(Debug)]
pub enum ComparisonOperator {
Equals,
NotEquals,
Greater,
GreaterEquals,
Lower,
LowerEquals,
Unknown,
}
impl Sql for ComparisonOperator {
fn sql(&self, mut s: String, _ctx: &Context) -> Result<String> {
match self {
ComparisonOperator::Equals => {
s.push_str(" = ");
Ok(s)
}
ComparisonOperator::NotEquals => {
s.push_str(" != ");
Ok(s)
}
ComparisonOperator::Greater => {
s.push_str(" > ");
Ok(s)
}
ComparisonOperator::GreaterEquals => {
s.push_str(" >= ");
Ok(s)
}
ComparisonOperator::Lower => {
s.push_str(" < ");
Ok(s)
}
ComparisonOperator::LowerEquals => {
s.push_str(" <= ");
Ok(s)
}
ComparisonOperator::Unknown => Err(SqlGenError::ParseFailed(
"Was not able to parse ComparisonOperator".into(),
)),
}
}
}
impl From<&str> for ComparisonOperator {
fn from(value: &str) -> Self {
match value {
"=" => ComparisonOperator::Equals,
"!=" => ComparisonOperator::NotEquals,
">" => ComparisonOperator::Greater,
">=" => ComparisonOperator::GreaterEquals,
"<" => ComparisonOperator::Lower,
"<=" => ComparisonOperator::LowerEquals,
_ => ComparisonOperator::Unknown,
}
}
}