use crate::Result;
use async_trait::async_trait;
use unitycatalog_common::models::credentials::v1::*;
#[async_trait]
pub trait CredentialHandler<Cx = crate::api::RequestContext>: Send + Sync + 'static {
async fn list_credentials(
&self,
request: ListCredentialsRequest,
context: Cx,
) -> Result<ListCredentialsResponse>;
async fn create_credential(
&self,
request: CreateCredentialRequest,
context: Cx,
) -> Result<Credential>;
async fn get_credential(
&self,
request: GetCredentialRequest,
context: Cx,
) -> Result<Credential>;
async fn update_credential(
&self,
request: UpdateCredentialRequest,
context: Cx,
) -> Result<Credential>;
async fn delete_credential(&self, request: DeleteCredentialRequest, context: Cx) -> Result<()>;
}