use crate::Result;
use async_trait::async_trait;
use unitycatalog_common::models::agents::v0alpha1::*;
#[async_trait]
pub trait AgentHandler<Cx = crate::api::RequestContext>: Send + Sync + 'static {
async fn list_agents(
&self,
request: ListAgentsRequest,
context: Cx,
) -> Result<ListAgentsResponse>;
async fn create_agent(&self, request: CreateAgentRequest, context: Cx) -> Result<Agent>;
async fn get_agent(&self, request: GetAgentRequest, context: Cx) -> Result<Agent>;
async fn update_agent(&self, request: UpdateAgentRequest, context: Cx) -> Result<Agent>;
async fn delete_agent(&self, request: DeleteAgentRequest, context: Cx) -> Result<()>;
}