reefdb/sql/statements/
mod.rs

1use self::{
2    create::CreateStatement, delete::DeleteStatement, insert::InsertStatement,
3    select::SelectStatement, update::UpdateStatement,
4};
5
6use nom::{branch::alt, character::complete::multispace0, sequence::preceded, IResult};
7
8
9pub mod create;
10pub mod delete;
11pub mod insert;
12pub mod select;
13pub mod update;
14
15#[derive(Debug, PartialEq)]
16pub enum Statement {
17    Create(CreateStatement),
18    Insert(InsertStatement),
19    Select(SelectStatement),
20    Update(UpdateStatement),
21    Delete(DeleteStatement),
22}
23
24impl Statement {
25    pub fn parse(input: &str) -> IResult<&str, Statement> {
26        preceded(
27            multispace0,
28            alt((
29                CreateStatement::parse,
30                InsertStatement::parse,
31                SelectStatement::parse,
32                UpdateStatement::parse,
33                DeleteStatement::parse,
34            )),
35        )(input)
36    }
37}