asana/model/
task_response.rs1use serde::{Serialize, Deserialize};
2use super::{CustomFieldResponse, ProjectCompact, TagCompact, TaskBase, UserCompact};
3#[derive(Debug, Clone, Serialize, Deserialize, Default)]
4pub struct TaskResponse {
5 #[serde(flatten)]
6 pub task_base: TaskBase,
7 #[serde(skip_serializing_if = "Option::is_none")]
8 pub assignee: Option<serde_json::Value>,
9 #[serde(skip_serializing_if = "Option::is_none")]
10 pub assignee_section: Option<serde_json::Value>,
11 #[serde(skip_serializing_if = "Option::is_none")]
13 pub custom_fields: Option<Vec<CustomFieldResponse>>,
14 #[serde(skip_serializing_if = "Option::is_none")]
16 pub followers: Option<Vec<UserCompact>>,
17 #[serde(skip_serializing_if = "Option::is_none")]
18 pub parent: Option<serde_json::Value>,
19 #[serde(skip_serializing_if = "Option::is_none")]
21 pub permalink_url: Option<String>,
22 #[serde(skip_serializing_if = "Option::is_none")]
24 pub projects: Option<Vec<ProjectCompact>>,
25 #[serde(skip_serializing_if = "Option::is_none")]
27 pub tags: Option<Vec<TagCompact>>,
28 #[serde(skip_serializing_if = "Option::is_none")]
29 pub workspace: Option<serde_json::Value>,
30}
31impl std::fmt::Display for TaskResponse {
32 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> Result<(), std::fmt::Error> {
33 write!(f, "{}", serde_json::to_string(self).unwrap())
34 }
35}
36impl std::ops::Deref for TaskResponse {
37 type Target = TaskBase;
38 fn deref(&self) -> &Self::Target {
39 &self.task_base
40 }
41}
42impl std::ops::DerefMut for TaskResponse {
43 fn deref_mut(&mut self) -> &mut Self::Target {
44 &mut self.task_base
45 }
46}