use super::Column;
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct Table {
pub name: String,
pub physical_name: String,
pub deleted: bool,
pub columns: Vec<Column>,
}
impl Table {
pub fn new(name: impl Into<String>, columns: Vec<Column>) -> Self {
let name = name.into();
Self {
physical_name: name.clone(),
name,
deleted: false,
columns,
}
}
pub fn visible_columns(&self) -> Vec<&Column> {
let mut visible: Vec<&Column> = self.columns.iter().filter(|c| !c.deleted).collect();
visible.sort_by(|a, b| a.name.cmp(&b.name));
visible
}
}
#[derive(Debug, Clone, Default, PartialEq, Eq)]
pub struct Schema {
pub tables: Vec<Table>,
}
impl Schema {
pub fn visible_tables(&self) -> Vec<&Table> {
let mut visible: Vec<&Table> = self.tables.iter().filter(|t| !t.deleted).collect();
visible.sort_by(|a, b| a.name.cmp(&b.name));
visible
}
}