use crate::Result;
use async_trait::async_trait;
use unitycatalog_common::models::schemas::v1::*;
#[async_trait]
pub trait SchemaHandler<Cx = crate::api::RequestContext>: Send + Sync + 'static {
async fn list_schemas(
&self,
request: ListSchemasRequest,
context: Cx,
) -> Result<ListSchemasResponse>;
async fn create_schema(&self, request: CreateSchemaRequest, context: Cx) -> Result<Schema>;
async fn get_schema(&self, request: GetSchemaRequest, context: Cx) -> Result<Schema>;
async fn update_schema(&self, request: UpdateSchemaRequest, context: Cx) -> Result<Schema>;
async fn delete_schema(&self, request: DeleteSchemaRequest, context: Cx) -> Result<()>;
}