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, Box<dyn std::error::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, Box<dyn std::error::Error>> {
let mut params = String::from("limit=100");
if let Some(member) = member {
write!(params, "&memberId={}", member)?;
}
if let Some(project) = project {
write!(params, "&projectId={}", project)?;
}
if let Some(date) = date {
write!(params, "&date={}", date)?;
}
if let Some(begin_date) = begin_date {
write!(params, "&dateOnAfter={}", begin_date)?;
}
if let Some(end_date) = end_date {
write!(params, "&dateOnBefore={}", end_date)?;
}
Ok(client
.read::<time::TimeEntries>("time-entries", Some(¶ms))
.await?)
}
#[cfg(test)]
mod tests;