use crate::Result;
use async_trait::async_trait;
use unitycatalog_common::models::providers::v1::*;
#[async_trait]
pub trait ProviderHandler<Cx = crate::api::RequestContext>: Send + Sync + 'static {
async fn list_providers(
&self,
request: ListProvidersRequest,
context: Cx,
) -> Result<ListProvidersResponse>;
async fn create_provider(
&self,
request: CreateProviderRequest,
context: Cx,
) -> Result<Provider>;
async fn get_provider(&self, request: GetProviderRequest, context: Cx) -> Result<Provider>;
async fn update_provider(
&self,
request: UpdateProviderRequest,
context: Cx,
) -> Result<Provider>;
async fn delete_provider(&self, request: DeleteProviderRequest, context: Cx) -> Result<()>;
}