use crate::Result;
use async_trait::async_trait;
use unitycatalog_common::models::tables::v1::*;
#[async_trait]
pub trait TableHandler<Cx = crate::api::RequestContext>: Send + Sync + 'static {
async fn list_table_summaries(
&self,
request: ListTableSummariesRequest,
context: Cx,
) -> Result<ListTableSummariesResponse>;
async fn list_tables(
&self,
request: ListTablesRequest,
context: Cx,
) -> Result<ListTablesResponse>;
async fn create_table(&self, request: CreateTableRequest, context: Cx) -> Result<Table>;
async fn get_table(&self, request: GetTableRequest, context: Cx) -> Result<Table>;
async fn get_table_exists(
&self,
request: GetTableExistsRequest,
context: Cx,
) -> Result<GetTableExistsResponse>;
async fn delete_table(&self, request: DeleteTableRequest, context: Cx) -> Result<()>;
}