use crate::ast::parse_schema;
use crate::catalog::{build_catalog, Catalog};
use crate::emit::emit_schema;
use crate::error::HolocronError;
use crate::resolve::resolve_views;
#[derive(Debug, Clone)]
pub struct Compiled {
pub catalog: Catalog,
pub ddl: String,
}
pub fn compile(input: &str) -> Result<Compiled, Vec<HolocronError>> {
let document = parse_schema(input).map_err(|error| vec![error])?;
let catalog = build_catalog(&document)?;
let catalog = resolve_views(catalog, &document)?;
let ddl = emit_schema(&document);
Ok(Compiled { catalog, ddl })
}