use crate::{
error::DbResult,
metadata::{DatabaseMetadata, EnumMetadata, SchemaMetadata, TableMetadata, ViewMetadata},
};
use std::collections::HashMap;
pub mod postgres;
#[async_trait::async_trait]
pub trait Introspector: Send + Sync {
async fn introspect(&self, schemas: &[String]) -> DbResult<DatabaseMetadata>;
async fn introspect_schema(&self, schema_name: &str) -> DbResult<SchemaMetadata>;
async fn introspect_table(
&self,
schema_name: &str,
table_name: &str,
) -> DbResult<TableMetadata>;
async fn introspect_view(&self, schema_name: &str, view_name: &str) -> DbResult<ViewMetadata>;
async fn introspect_enums_for_schema(
&self,
schema_name: &str,
) -> DbResult<HashMap<String, EnumMetadata>>;
}