use super::{Context, RenameHints, Table, Type};
use crate::schema::db;
pub struct Schema<'a> {
previous: &'a db::Schema,
next: &'a db::Schema,
tables: Vec<Table<'a>>,
}
impl<'a> Schema<'a> {
pub fn from(from: &'a db::Schema, to: &'a db::Schema, rename_hints: &'a RenameHints) -> Self {
let cx = Context::new(from, to, rename_hints);
Self {
previous: from,
next: to,
tables: Table::diff(&cx, &from.tables, &to.tables),
}
}
pub fn types(&self) -> Vec<Type<'a>> {
Type::diff(self.previous, self.next)
}
pub fn tables(&self) -> &[Table<'a>] {
&self.tables
}
pub fn is_empty(&self) -> bool {
self.tables.is_empty()
}
pub fn previous(&self) -> &'a db::Schema {
self.previous
}
pub fn next(&self) -> &'a db::Schema {
self.next
}
}