mod enum_type;
mod table;
mod view;
use crate::ast::SchemaDocument;
pub fn emit_schema(document: &SchemaDocument) -> String {
let mut output = String::new();
for declared in &document.types {
enum_type::emit(&mut output, declared);
}
for one_table in &document.tables {
table::emit_table(&mut output, one_table);
}
for one_table in &document.tables {
for index in &one_table.indexes {
table::emit_index(&mut output, &one_table.name.value, index);
}
}
for one_view in &document.views {
view::emit(&mut output, one_view);
}
output
}
pub(crate) fn quote_ident(name: &str) -> String {
format!("\"{}\"", name.replace('"', "\"\""))
}
pub(crate) fn quote_literal(value: &str) -> String {
format!("'{}'", value.replace('\'', "''"))
}