use crate::ast::other::show_databases::ShowDatabasesQuery;
use crate::ast::SQLStatement;
use crate::errors::predule::ParsingError;
use crate::errors::RRDBError;
use crate::lexer::predule::Token;
use crate::parser::predule::{Parser, ParserContext};
impl Parser {
pub(crate) fn parse_backslash_query(
&mut self,
_context: ParserContext,
) -> Result<SQLStatement, RRDBError> {
if !self.has_next_token() {
return Err(ParsingError::wrap("E0801 need more tokens"));
}
let current_token = self.get_next_token();
match current_token {
Token::Identifier(identifier) => match identifier.as_str() {
"l" => Ok(ShowDatabasesQuery {}.into()),
_ => Err(ParsingError::wrap(format!(
"E0803: unexpected identifier '{:?}'",
identifier
))),
},
_ => Err(ParsingError::wrap(format!(
"E0802: unexpected token '{:?}'",
current_token
))),
}
}
}