use llkv_plan::{
AlterTablePlan, CreateIndexPlan, CreateTablePlan, CreateViewPlan, DropIndexPlan, DropTablePlan,
DropViewPlan, RenameTablePlan,
};
use llkv_result::Result;
pub trait CatalogDdl {
type CreateTableOutput;
type DropTableOutput;
type RenameTableOutput;
type AlterTableOutput;
type CreateIndexOutput;
type DropIndexOutput;
fn create_table(&self, plan: CreateTablePlan) -> Result<Self::CreateTableOutput>;
fn drop_table(&self, plan: DropTablePlan) -> Result<Self::DropTableOutput>;
fn create_view(&self, plan: CreateViewPlan) -> Result<()>;
fn drop_view(&self, plan: DropViewPlan) -> Result<()>;
fn rename_table(&self, plan: RenameTablePlan) -> Result<Self::RenameTableOutput>;
fn alter_table(&self, plan: AlterTablePlan) -> Result<Self::AlterTableOutput>;
fn create_index(&self, plan: CreateIndexPlan) -> Result<Self::CreateIndexOutput>;
fn drop_index(&self, plan: DropIndexPlan) -> Result<Self::DropIndexOutput>;
}