use std::fmt::Write;
use crate::client::client;
use crate::model::{enums, project, types};
pub async fn project(
client: &client::Client,
id: types::UUID,
) -> Result<project::Project, Box<dyn std::error::Error>> {
Ok(client
.read::<project::Project>(&format!("projects/{id}"), None)
.await?)
}
pub async fn projects(
client: &client::Client,
client_id: Option<types::UUID>,
project_type: Option<types::UUID>,
status: Option<enums::Status>,
name_contains: Option<&str>,
) -> Result<project::Projects, Box<dyn std::error::Error>> {
let mut params = String::from("limit=100");
if let Some(client_id) = client_id {
write!(params, "&clientId={}", client_id)?;
}
if let Some(project_type) = project_type {
write!(params, "&projectTypeId={}", project_type)?;
}
if let Some(status) = status {
write!(params, "&statusId={}", status)?;
}
if let Some(name_contains) = name_contains {
write!(params, "&nameContains={}", name_contains)?;
}
Ok(client
.read::<project::Projects>("projects", Some(¶ms))
.await?)
}
#[cfg(test)]
mod tests;