use crate::{
db::{
EntityCatalogDescription, EntityConstraintDescription, EntityFieldDescription,
EntitySchemaDescription, MemoryCatalogDescription, StorageReport, StoreCatalogDescription,
session::DbSession,
},
error::Error,
traits::CanisterKind,
};
use icydb_core as core;
impl<C: CanisterKind> DbSession<C> {
#[must_use]
pub fn show_indexes<E>(&self) -> Vec<String>
where
E: crate::traits::EntityFor<C>,
{
self.inner.show_indexes::<E>()
}
pub fn try_show_constraints<E>(&self) -> Result<Vec<EntityConstraintDescription>, Error>
where
E: crate::traits::EntityFor<C>,
{
Ok(self.inner.try_show_constraints::<E>()?)
}
#[must_use]
pub fn show_columns<E>(&self) -> Vec<EntityFieldDescription>
where
E: crate::traits::EntityFor<C>,
{
self.inner.show_columns::<E>()
}
#[must_use]
pub fn show_entities(&self) -> Vec<EntityCatalogDescription> {
self.inner.show_entities()
}
pub fn try_show_entities(
&self,
) -> Result<Vec<EntityCatalogDescription>, core::error::InternalError> {
self.inner.try_show_entities()
}
#[must_use]
pub fn show_stores(&self) -> Vec<StoreCatalogDescription> {
self.inner.show_stores()
}
#[must_use]
pub fn show_memory(&self) -> Vec<MemoryCatalogDescription> {
self.inner.show_memory()
}
#[must_use]
pub fn describe_entity<E>(&self) -> EntitySchemaDescription
where
E: crate::traits::EntityFor<C>,
{
self.inner.describe_entity::<E>()
}
pub fn try_describe_entity<E>(&self) -> Result<EntitySchemaDescription, Error>
where
E: crate::traits::EntityFor<C>,
{
Ok(self.inner.try_describe_entity::<E>()?)
}
pub fn storage_report(
&self,
name_to_path: &[(&'static str, &'static str)],
) -> Result<StorageReport, Error> {
Ok(self.inner.storage_report(name_to_path)?)
}
}