use vantage_types::Entity;
use super::Table;
use crate::{references::ContainedRelation, traits::table_source::TableSource};
impl<T: TableSource, E: Entity<T::Value>> Table<T, E> {
pub fn vista_references(&self) -> Vec<vantage_vista::Reference> {
self.vista_references_keyed(&self.id_field_name())
}
pub(crate) fn vista_references_keyed(&self, source_id: &str) -> Vec<vantage_vista::Reference> {
let Some(refs) = &self.refs else {
return Vec::new();
};
refs.iter()
.map(|(name, r)| {
r.vista_reference(name, r.target_table_name(&self.data_source), source_id)
})
.collect()
}
pub fn vista_contained(&self) -> Vec<vantage_vista::Reference> {
self.contained.iter().map(|c| c.reference()).collect()
}
pub fn contained_relation(&self, name: &str) -> Option<&ContainedRelation<T>> {
self.contained.iter().find(|c| c.name() == name)
}
}