#![allow(dead_code)]
use serde::Deserialize;
#[derive(Debug, Clone, Deserialize)]
pub struct User {
pub username: String,
}
#[derive(Debug, Clone, Deserialize)]
pub struct SimpleUser {
pub username: String,
#[serde(default)]
pub name: Option<String>,
#[serde(default)]
pub avatar_url: Option<String>,
}
#[derive(Debug, Clone, Deserialize)]
pub struct Project {
pub path_with_namespace: String,
#[serde(default)]
pub web_url: Option<String>,
}
#[derive(Debug, Clone, Deserialize)]
pub struct Target {
pub iid: u64,
#[serde(default)]
pub title: String,
#[serde(default)]
pub web_url: Option<String>,
#[serde(default)]
pub state: String,
#[serde(default)]
pub draft: bool,
#[serde(default)]
pub work_in_progress: bool,
#[serde(default)]
pub author: Option<SimpleUser>,
}
impl Target {
pub fn is_draft(&self) -> bool {
self.draft || self.work_in_progress
}
}
#[derive(Debug, Clone, Deserialize)]
pub struct Todo {
pub id: u64,
pub action_name: String,
pub target_type: String,
#[serde(default)]
pub target_url: Option<String>,
#[serde(default)]
pub body: Option<String>,
#[serde(default)]
pub created_at: Option<String>,
#[serde(default)]
pub author: Option<SimpleUser>,
pub project: Project,
#[serde(default)]
pub target: Option<Target>,
}