use super::*;
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct Task {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub r#type: Option<TaskType>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub item: Option<FileMini>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub due_at: Option<chrono::DateTime<chrono::Utc>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub action: Option<TaskAction>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub message: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub task_assignment_collection: Option<TaskAssignments>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub is_completed: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub created_by: Option<UserMini>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub created_at: Option<chrono::DateTime<chrono::Utc>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub completion_rule: Option<TaskCompletionRule>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct Tasks {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub total_count: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub entries: Option<Vec<Task>>,
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct TaskAction(pub String);
impl TaskAction {
pub const REVIEW: &'static str = "review";
pub const COMPLETE: &'static str = "complete";
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct TaskCompletionRule(pub String);
impl TaskCompletionRule {
pub const ALL_ASSIGNEES: &'static str = "all_assignees";
pub const ANY_ASSIGNEE: &'static str = "any_assignee";
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct CreateTaskRequestItem {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub r#type: Option<AiCitationType>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct CreateTaskRequest {
pub item: CreateTaskRequestItem,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub action: Option<TaskAction>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub message: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub due_at: Option<chrono::DateTime<chrono::Utc>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub completion_rule: Option<TaskCompletionRule>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct UpdateTaskRequest {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub action: Option<TaskAction>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub message: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub due_at: Option<chrono::DateTime<chrono::Utc>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub completion_rule: Option<TaskCompletionRule>,
}