use crate::Result;
use async_trait::async_trait;
use unitycatalog_common::models::catalogs::v1::*;
#[async_trait]
pub trait CatalogHandler<Cx = crate::api::RequestContext>: Send + Sync + 'static {
async fn list_catalogs(
&self,
request: ListCatalogsRequest,
context: Cx,
) -> Result<ListCatalogsResponse>;
async fn create_catalog(&self, request: CreateCatalogRequest, context: Cx) -> Result<Catalog>;
async fn get_catalog(&self, request: GetCatalogRequest, context: Cx) -> Result<Catalog>;
async fn update_catalog(&self, request: UpdateCatalogRequest, context: Cx) -> Result<Catalog>;
async fn delete_catalog(&self, request: DeleteCatalogRequest, context: Cx) -> Result<()>;
}