use std::collections::BTreeSet;
use pest_consume::Parser;
use crate::sql::expression::parser::{ExpressionParser, Result, Rule};
#[derive(Eq, Ord, PartialOrd, PartialEq, Debug, Clone)]
pub enum Value {
Null,
Boolean(bool),
Date(time::Date),
Text(String),
Set(BTreeSet<String>),
}
impl Value {
pub fn is_null(&self) -> bool {
matches!(self, Value::Null)
}
pub fn is_true(&self) -> bool {
matches!(self, Value::Boolean(true))
}
pub fn is_false(&self) -> bool {
matches!(self, Value::Boolean(false))
}
pub fn parse(input: &str) -> Result<Value> {
let nodes = ExpressionParser::parse(Rule::value, input)?;
let node = nodes.single()?;
let v = ExpressionParser::value(node)?;
Ok(v)
}
}
#[cfg(test)]
mod test {
}