matdb 0.1.0

An experimental embedded SQL-like DBMS
Documentation
use crate::ast::{DeleteStatement, Statement};

use super::{rename_default_table, Parser, ParserError};

impl<'a> Parser<'a> {
    pub(crate) fn parse_delete_statement(&mut self) -> Result<Statement, ParserError> {
        self.try_consume_keyword("DELETE")?;

        self.try_consume_keyword("FROM")?;

        let table = self.try_consume_symbol()?;

        let cond = if let Ok(_) = self.try_consume_keyword("WHERE") {
            Some(rename_default_table(&self.parse_expr()?, &table))
        } else {
            None
        };

        self.try_consume_semi()?;

        Ok(Statement::Delete(DeleteStatement { table, cond }))
    }
}