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