use crate::Result;
use async_trait::async_trait;
use unitycatalog_common::models::policies::v1::*;
#[async_trait]
pub trait PolicyHandler<Cx = crate::api::RequestContext>: Send + Sync + 'static {
async fn list_policies(
&self,
request: ListPoliciesRequest,
context: Cx,
) -> Result<ListPoliciesResponse>;
async fn create_policy(&self, request: CreatePolicyRequest, context: Cx) -> Result<PolicyInfo>;
async fn get_policy(&self, request: GetPolicyRequest, context: Cx) -> Result<PolicyInfo>;
async fn update_policy(&self, request: UpdatePolicyRequest, context: Cx) -> Result<PolicyInfo>;
async fn delete_policy(&self, request: DeletePolicyRequest, context: Cx) -> Result<()>;
}