use sqlparser::ast::Statement;
use sqlparser::dialect::GenericDialect;
use sqlparser::parser::Parser;
use super::error::SqlError;
pub struct SqlParser;
impl SqlParser {
pub fn parse(sql: &str) -> Result<Statement, SqlError> {
let dialect = GenericDialect {};
let mut statements = Parser::parse_sql(&dialect, sql)?;
if statements.is_empty() {
return Err(SqlError::ParseError("No SQL statement found".to_string()));
}
if statements.len() > 1 {
return Err(SqlError::UnsupportedFeature(
"Multiple statements not supported".to_string(),
));
}
Ok(statements.remove(0))
}
pub fn parse_multiple(sql: &str) -> Result<Vec<Statement>, SqlError> {
let dialect = GenericDialect {};
let statements = Parser::parse_sql(&dialect, sql)?;
Ok(statements)
}
}