multisql/
parse_sql.rs

1pub use sqlparser::parser::ParserError;
2use sqlparser::{ast::Statement, dialect::GenericDialect, parser::Parser};
3
4pub struct Query(pub Statement);
5
6pub fn parse(sql: &str) -> Result<Vec<Query>, ParserError> {
7	let dialect = GenericDialect {};
8
9	Parser::parse_sql(&dialect, sql).map(|parsed| parsed.into_iter().map(Query).collect())
10}
11
12pub fn parse_single(sql: &str) -> Result<Query, ParserError> {
13	parse(sql)?
14		.into_iter()
15		.next()
16		.ok_or_else(|| ParserError::ParserError(String::from("No Query")))
17}