sqlgen 0.1.6

A library to generate SQL Statements.
Documentation
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,
        }
    }
}