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 nom::{branch::alt, bytes::complete::tag, combinator::map, IResult};
use serde::{Deserialize, Serialize};

#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub enum DataType {
    Text,
    Integer,
    FTSText
}

impl DataType {
    pub fn parse(input: &str) -> IResult<&str, DataType> {
        alt((
            map(tag("TEXT"), |_| DataType::Text),
            map(tag("INTEGER"), |_| DataType::Integer),
            map(tag("FTS_TEXT"), |_| DataType::FTSText),
        ))(input)
    }
}


#[cfg(test)]
mod tests {
    #[test]
    fn parse_test() {
        use crate::sql::data_type::DataType;

        assert_eq!(DataType::parse("TEXT"), Ok(("", DataType::Text)));
        assert_eq!(DataType::parse("INTEGER"), Ok(("", DataType::Integer)));
        assert_eq!(DataType::parse("FTS_TEXT"), Ok(("", DataType::FTSText)));
    }
}