pub mod ast;
pub mod dialects;
pub mod errors;
pub mod generator;
pub mod optimizer;
pub mod parser;
pub mod schema;
pub mod tokens;
pub use ast::{Expr, QuoteStyle, Statement};
pub use dialects::Dialect;
pub use errors::SqlglotError;
pub use generator::{generate, generate_pretty};
pub use optimizer::annotate_types::{TypeAnnotations, annotate_types};
pub use optimizer::scope_analysis::{Scope, ScopeType, build_scope, find_all_in_scope};
pub use parser::parse;
pub fn transpile(
sql: &str,
read_dialect: Dialect,
write_dialect: Dialect,
) -> errors::Result<String> {
let ast = parse(sql, read_dialect)?;
let transformed = dialects::transform(&ast, read_dialect, write_dialect);
Ok(generate(&transformed, write_dialect))
}
pub fn transpile_statements(
sql: &str,
read_dialect: Dialect,
write_dialect: Dialect,
) -> errors::Result<Vec<String>> {
let stmts = parser::parse_statements(sql, read_dialect)?;
let mut results = Vec::with_capacity(stmts.len());
for stmt in &stmts {
let transformed = dialects::transform(stmt, read_dialect, write_dialect);
results.push(generate(&transformed, write_dialect));
}
Ok(results)
}