use indexmap::IndexMap;
use crate::{
column::Column,
reference::{ContainedSpec, Reference},
};
#[derive(Debug, Clone, Default)]
pub struct VistaMetadata {
pub columns: IndexMap<String, Column>,
pub references: IndexMap<String, Reference>,
pub contained: IndexMap<String, ContainedSpec>,
pub id_column: Option<String>,
}
impl VistaMetadata {
pub fn new() -> Self {
Self::default()
}
pub fn with_column(mut self, column: Column) -> Self {
self.columns.insert(column.name.clone(), column);
self
}
pub fn with_reference(mut self, reference: Reference) -> Self {
self.references.insert(reference.name.clone(), reference);
self
}
pub fn with_contained(mut self, spec: ContainedSpec) -> Self {
self.contained.insert(spec.name.clone(), spec);
self
}
pub fn with_id_column(mut self, name: impl Into<String>) -> Self {
self.id_column = Some(name.into());
self
}
}