use crate::Result;
use async_trait::async_trait;
use unitycatalog_common::models::external_locations::v1::*;
#[async_trait]
pub trait ExternalLocationHandler<Cx = crate::api::RequestContext>: Send + Sync + 'static {
async fn list_external_locations(
&self,
request: ListExternalLocationsRequest,
context: Cx,
) -> Result<ListExternalLocationsResponse>;
async fn create_external_location(
&self,
request: CreateExternalLocationRequest,
context: Cx,
) -> Result<ExternalLocation>;
async fn get_external_location(
&self,
request: GetExternalLocationRequest,
context: Cx,
) -> Result<ExternalLocation>;
async fn update_external_location(
&self,
request: UpdateExternalLocationRequest,
context: Cx,
) -> Result<ExternalLocation>;
async fn delete_external_location(
&self,
request: DeleteExternalLocationRequest,
context: Cx,
) -> Result<()>;
}