use crate::Result;
use async_trait::async_trait;
use unitycatalog_common::models::functions::v1::*;
#[async_trait]
pub trait FunctionHandler<Cx = crate::api::RequestContext>: Send + Sync + 'static {
async fn list_functions(
&self,
request: ListFunctionsRequest,
context: Cx,
) -> Result<ListFunctionsResponse>;
async fn create_function(
&self,
request: CreateFunctionRequest,
context: Cx,
) -> Result<Function>;
async fn get_function(&self, request: GetFunctionRequest, context: Cx) -> Result<Function>;
async fn update_function(
&self,
request: UpdateFunctionRequest,
context: Cx,
) -> Result<Function>;
async fn delete_function(&self, request: DeleteFunctionRequest, context: Cx) -> Result<()>;
}