use crate::Result;
use async_trait::async_trait;
use unitycatalog_common::models::shares::v1::*;
#[async_trait]
pub trait ShareHandler<Cx = crate::api::RequestContext>: Send + Sync + 'static {
async fn list_shares(
&self,
request: ListSharesRequest,
context: Cx,
) -> Result<ListSharesResponse>;
async fn create_share(&self, request: CreateShareRequest, context: Cx) -> Result<Share>;
async fn get_share(&self, request: GetShareRequest, context: Cx) -> Result<Share>;
async fn update_share(&self, request: UpdateShareRequest, context: Cx) -> Result<Share>;
async fn delete_share(&self, request: DeleteShareRequest, context: Cx) -> Result<()>;
async fn get_permissions(
&self,
request: GetPermissionsRequest,
context: Cx,
) -> Result<GetPermissionsResponse>;
async fn update_permissions(
&self,
request: UpdatePermissionsRequest,
context: Cx,
) -> Result<UpdatePermissionsResponse>;
}