use crate::model::TimeLog;
use chrono::Duration;
use serde::Deserialize;
use serde_with::{DurationSeconds, serde_as};
#[derive(Debug, Deserialize)]
pub(super) struct Project {
pub(super) name: String,
pub(super) timelogs: TimeLogs,
}
#[serde_as]
#[derive(Debug, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct TimeLogs {
pub(super) nodes: Vec<TimeLog>,
pub(super) page_info: PageInfo,
#[serde_as(as = "DurationSeconds<String>")]
pub(super) total_spent_time: Duration,
}
#[derive(Debug, Deserialize)]
#[serde(rename_all = "camelCase")]
pub(super) struct PageInfo {
pub(super) has_next_page: bool,
pub(super) end_cursor: Option<String>,
}
#[derive(Debug, Deserialize)]
pub(super) struct ApiResponse {
pub(super) data: Data,
pub(super) errors: Option<GraphQlErrors>,
}
#[derive(Debug, Deserialize)]
pub(super) struct Data {
pub(super) project: Option<Project>,
}
#[derive(Debug, Deserialize)]
pub(super) struct GraphQlErrors {
pub(super) errors: Vec<GraphQlError>,
}
#[derive(Debug, Deserialize)]
pub(super) struct GraphQlError {
pub(super) message: String,
}