reefdb 0.1.0

ReefDB is a minimalistic, in-memory and on-disk database management system written in Rust, implementing basic SQL query capabilities and full-text search.
Documentation
use crate::IResult;
use nom::{branch::alt, bytes::complete::tag, combinator::recognize, sequence::delimited};
use serde::{Deserialize, Serialize};
#[derive(Debug, PartialEq, Clone, Serialize, Deserialize)]
pub enum DataValue {
    Text(String),
    Integer(i32),
}

impl DataValue {
    pub fn parse(input: &str) -> IResult<&str, DataValue> {
        alt((parse_quoted_text, parse_integer))(input)
    }
}
fn parse_integer(input: &str) -> IResult<&str, DataValue> {
    let (input, value) = nom::character::complete::digit1(input)?;

    Ok((input, DataValue::Integer(value.parse().unwrap())))
}

fn parse_quoted_text(input: &str) -> IResult<&str, DataValue> {
    let (input, value) = delimited(
        tag("'"),
        recognize(nom::multi::many1(nom::character::complete::none_of("'"))),
        tag("'"),
    )(input)?;

    Ok((input, DataValue::Text(value.to_string())))
}

#[cfg(test)]
mod tests {
    #[test]
    fn parse_test() {
     
        use crate::sql::data_value::DataValue;
        assert_eq!(
            DataValue::parse("'Hello World'"),
            Ok(("", DataValue::Text("Hello World".to_string())))
        );
        assert_eq!(
            DataValue::parse("123"),
            Ok(("", DataValue::Integer(123)))
        );
    }
}