1use crate::models;
12use serde::{Deserialize, Serialize};
13
14#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
16pub struct PullRequestSimple {
17 #[serde(rename = "url")]
18 pub url: String,
19 #[serde(rename = "id")]
20 pub id: i32,
21 #[serde(rename = "node_id")]
22 pub node_id: String,
23 #[serde(rename = "html_url")]
24 pub html_url: String,
25 #[serde(rename = "diff_url")]
26 pub diff_url: String,
27 #[serde(rename = "patch_url")]
28 pub patch_url: String,
29 #[serde(rename = "issue_url")]
30 pub issue_url: String,
31 #[serde(rename = "commits_url")]
32 pub commits_url: String,
33 #[serde(rename = "review_comments_url")]
34 pub review_comments_url: String,
35 #[serde(rename = "review_comment_url")]
36 pub review_comment_url: String,
37 #[serde(rename = "comments_url")]
38 pub comments_url: String,
39 #[serde(rename = "statuses_url")]
40 pub statuses_url: String,
41 #[serde(rename = "number")]
42 pub number: i32,
43 #[serde(rename = "state")]
44 pub state: String,
45 #[serde(rename = "locked")]
46 pub locked: bool,
47 #[serde(rename = "title")]
48 pub title: String,
49 #[serde(rename = "user", deserialize_with = "Option::deserialize")]
50 pub user: Option<Box<models::NullableSimpleUser>>,
51 #[serde(rename = "body", deserialize_with = "Option::deserialize")]
52 pub body: Option<String>,
53 #[serde(rename = "labels")]
54 pub labels: Vec<models::PullRequestSimpleLabelsInner>,
55 #[serde(rename = "milestone", deserialize_with = "Option::deserialize")]
56 pub milestone: Option<Box<models::NullableMilestone>>,
57 #[serde(rename = "active_lock_reason", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
58 pub active_lock_reason: Option<Option<String>>,
59 #[serde(rename = "created_at")]
60 pub created_at: String,
61 #[serde(rename = "updated_at")]
62 pub updated_at: String,
63 #[serde(rename = "closed_at", deserialize_with = "Option::deserialize")]
64 pub closed_at: Option<String>,
65 #[serde(rename = "merged_at", deserialize_with = "Option::deserialize")]
66 pub merged_at: Option<String>,
67 #[serde(rename = "merge_commit_sha", deserialize_with = "Option::deserialize")]
68 pub merge_commit_sha: Option<String>,
69 #[serde(rename = "assignee", deserialize_with = "Option::deserialize")]
70 pub assignee: Option<Box<models::NullableSimpleUser>>,
71 #[serde(rename = "assignees", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
72 pub assignees: Option<Option<Vec<models::SimpleUser>>>,
73 #[serde(rename = "requested_reviewers", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
74 pub requested_reviewers: Option<Option<Vec<models::SimpleUser>>>,
75 #[serde(rename = "requested_teams", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
76 pub requested_teams: Option<Option<Vec<models::Team>>>,
77 #[serde(rename = "head")]
78 pub head: Box<models::PullRequestSimpleHead>,
79 #[serde(rename = "base")]
80 pub base: Box<models::PullRequestSimpleHead>,
81 #[serde(rename = "_links")]
82 pub _links: Box<models::PullRequestSimpleLinks>,
83 #[serde(rename = "author_association")]
84 pub author_association: models::AuthorAssociation,
85 #[serde(rename = "auto_merge", deserialize_with = "Option::deserialize")]
86 pub auto_merge: Option<Box<models::AutoMerge>>,
87 #[serde(rename = "draft", skip_serializing_if = "Option::is_none")]
89 pub draft: Option<bool>,
90}
91
92impl PullRequestSimple {
93 pub fn new(url: String, id: i32, node_id: String, html_url: String, diff_url: String, patch_url: String, issue_url: String, commits_url: String, review_comments_url: String, review_comment_url: String, comments_url: String, statuses_url: String, number: i32, state: String, locked: bool, title: String, user: Option<models::NullableSimpleUser>, body: Option<String>, labels: Vec<models::PullRequestSimpleLabelsInner>, milestone: Option<models::NullableMilestone>, created_at: String, updated_at: String, closed_at: Option<String>, merged_at: Option<String>, merge_commit_sha: Option<String>, assignee: Option<models::NullableSimpleUser>, head: models::PullRequestSimpleHead, base: models::PullRequestSimpleHead, _links: models::PullRequestSimpleLinks, author_association: models::AuthorAssociation, auto_merge: Option<models::AutoMerge>) -> PullRequestSimple {
95 PullRequestSimple {
96 url,
97 id,
98 node_id,
99 html_url,
100 diff_url,
101 patch_url,
102 issue_url,
103 commits_url,
104 review_comments_url,
105 review_comment_url,
106 comments_url,
107 statuses_url,
108 number,
109 state,
110 locked,
111 title,
112 user: user.map(Box::new),
113 body,
114 labels,
115 milestone: milestone.map(Box::new),
116 active_lock_reason: None,
117 created_at,
118 updated_at,
119 closed_at,
120 merged_at,
121 merge_commit_sha,
122 assignee: assignee.map(Box::new),
123 assignees: None,
124 requested_reviewers: None,
125 requested_teams: None,
126 head: Box::new(head),
127 base: Box::new(base),
128 _links: Box::new(_links),
129 author_association,
130 auto_merge: auto_merge.map(Box::new),
131 draft: None,
132 }
133 }
134}
135