pub mod common;
pub mod delete;
pub mod select;
pub mod r#where;
pub use common::{Column, Value, Variable};
pub use delete::DeleteQuery;
pub use r#where::{ComparisonOperator, WhereClause};
pub use select::SelectQuery;
use nom::{error::Error, Err, IResult};
#[derive(Debug, PartialEq)]
pub enum Query {
Select(SelectQuery),
Delete(DeleteQuery),
}
fn parse_query(input: &str) -> IResult<&str, Query> {
nom::branch::alt((
nom::combinator::map(select::parse_select, Query::Select),
nom::combinator::map(delete::parse_delete, Query::Delete),
))(input)
}
impl<'a> TryFrom<&'a str> for Query {
type Error = Err<Error<&'a str>>;
fn try_from(value: &'a str) -> Result<Self, Self::Error> {
Ok(parse_query(value)?.1)
}
}