use std::fmt::Write;
use crate::client::client;
use crate::model::{time, types};
pub async fn time_entry(
client: &client::Client,
id: types::UUID,
) -> Result<time::TimeEntry, reqwest::Error> {
Ok(client
.read::<time::TimeEntry>(&format!("time-entries/{id}"), None)
.await?)
}
pub async fn time_entries(
client: &client::Client,
member: Option<types::UUID>,
project: Option<types::UUID>,
date: Option<types::Date>,
begin_date: Option<types::Date>,
end_date: Option<types::Date>,
) -> Result<time::TimeEntries, reqwest::Error> {
let mut params = String::from("limit=100");
if let Some(member) = member {
write!(params, "&memberId={}", member).unwrap();
}
if let Some(project) = project {
write!(params, "&projectId={}", project).unwrap();
}
if let Some(date) = date {
write!(params, "&date={}", date).unwrap();
}
if let Some(begin_date) = begin_date {
write!(params, "&dateOnAfter={}", begin_date).unwrap();
}
if let Some(end_date) = end_date {
write!(params, "&dateOnBefore={}", end_date).unwrap();
}
Ok(client
.read::<time::TimeEntries>("time-entries", Some(¶ms))
.await?)
}
#[cfg(test)]
mod tests;