use std::sync::Arc;
use crate::{error::Result, model::*, transport::*};
pub struct AgentsResource {
pub(crate) t: Arc<Transport>,
}
impl AgentsResource {
pub async fn list(&self) -> Result<Vec<Agent>> {
self.t.get_unwrap(&path_agents(), "agents").await
}
pub async fn create(&self, req: AgentCreateRequest) -> Result<Agent> {
self.t.post_unwrap(&path_agents(), &req, "agent").await
}
pub async fn get(&self, agent_id: i64) -> Result<Agent> {
self.t.get_unwrap(&path_agent(agent_id), "agent").await
}
pub async fn update(&self, agent_id: i64, req: AgentUpdateRequest) -> Result<Agent> {
self.t.patch_unwrap(&path_agent(agent_id), &req, "agent").await
}
pub async fn delete(&self, agent_id: i64) -> Result<()> {
self.t.delete(&path_agent(agent_id)).await
}
pub async fn list_mates(&self, agent_id: i64) -> Result<Vec<Mate>> {
self.t.get_unwrap(&path_agent_mates(agent_id), "mates").await
}
pub async fn save_mates(&self, agent_id: i64, mates: Vec<Mate>) -> Result<Vec<Mate>> {
self.t
.post_unwrap(&path_agent_mates(agent_id), &SaveMatesRequest { mates }, "mates")
.await
}
}