use std::fmt::Debug;
#[cfg(feature = "datafusion")]
pub mod storage;
pub type DataCatalogResult<T> = Result<T, DataCatalogError>;
#[derive(thiserror::Error, Debug)]
pub enum DataCatalogError {
#[error("Error in {catalog} catalog: {source}")]
Generic {
catalog: &'static str,
source: Box<dyn std::error::Error + Send + Sync + 'static>,
},
#[error("This data catalog doesn't exist: {data_catalog}")]
InvalidDataCatalog {
data_catalog: String,
},
#[error("Unknown configuration key '{catalog}' in '{key}' catalog.")]
UnknownConfigKey {
catalog: &'static str,
key: String,
},
#[error("Error in request: {source}")]
RequestError {
source: Box<dyn std::error::Error + Send + Sync + 'static>,
},
}
#[async_trait::async_trait]
pub trait DataCatalog: Send + Sync + Debug {
type Error;
async fn get_table_storage_location(
&self,
catalog_id: Option<String>,
database_name: &str,
table_name: &str,
) -> Result<String, Self::Error>;
}