asana/model/
task_request.rs1use serde::{Serialize, Deserialize};
2use super::TaskBase;
3impl TaskRequest {
4 pub fn new(name: impl Into<String>) -> Self {
5 Self {
6 task_base: TaskBase {
7 name: Some(name.into()),
8 ..TaskBase::default()
9 },
10 ..Self::default()
11 }
12 }
13}
14#[derive(Debug, Clone, Serialize, Deserialize, Default)]
15pub struct TaskRequest {
16 #[serde(flatten)]
17 pub task_base: TaskBase,
18 #[serde(skip_serializing_if = "Option::is_none")]
20 pub assignee: Option<String>,
21 #[serde(skip_serializing_if = "Option::is_none")]
24 pub assignee_section: Option<String>,
25 #[serde(skip_serializing_if = "Option::is_none")]
27 pub custom_fields: Option<serde_json::Value>,
28 #[serde(skip_serializing_if = "Option::is_none")]
30 pub followers: Option<Vec<String>>,
31 #[serde(skip_serializing_if = "Option::is_none")]
33 pub parent: Option<String>,
34 #[serde(skip_serializing_if = "Option::is_none")]
36 pub projects: Option<Vec<String>>,
37 #[serde(skip_serializing_if = "Option::is_none")]
39 pub tags: Option<Vec<String>>,
40 #[serde(skip_serializing_if = "Option::is_none")]
42 pub workspace: Option<String>,
43}
44impl std::fmt::Display for TaskRequest {
45 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> Result<(), std::fmt::Error> {
46 write!(f, "{}", serde_json::to_string(self).unwrap())
47 }
48}
49impl std::ops::Deref for TaskRequest {
50 type Target = TaskBase;
51 fn deref(&self) -> &Self::Target {
52 &self.task_base
53 }
54}
55impl std::ops::DerefMut for TaskRequest {
56 fn deref_mut(&mut self) -> &mut Self::Target {
57 &mut self.task_base
58 }
59}