use crate::Result;
use async_trait::async_trait;
use unitycatalog_common::models::recipients::v1::*;
#[async_trait]
pub trait RecipientHandler<Cx = crate::api::RequestContext>: Send + Sync + 'static {
async fn list_recipients(
&self,
request: ListRecipientsRequest,
context: Cx,
) -> Result<ListRecipientsResponse>;
async fn create_recipient(
&self,
request: CreateRecipientRequest,
context: Cx,
) -> Result<Recipient>;
async fn get_recipient(&self, request: GetRecipientRequest, context: Cx) -> Result<Recipient>;
async fn update_recipient(
&self,
request: UpdateRecipientRequest,
context: Cx,
) -> Result<Recipient>;
async fn delete_recipient(&self, request: DeleteRecipientRequest, context: Cx) -> Result<()>;
}