1use crate::models;
12use serde::{Deserialize, Serialize};
13
14#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
16pub struct IssueSearchResultItem {
17 #[serde(rename = "url")]
18 pub url: String,
19 #[serde(rename = "repository_url")]
20 pub repository_url: String,
21 #[serde(rename = "labels_url")]
22 pub labels_url: String,
23 #[serde(rename = "comments_url")]
24 pub comments_url: String,
25 #[serde(rename = "events_url")]
26 pub events_url: String,
27 #[serde(rename = "html_url")]
28 pub html_url: String,
29 #[serde(rename = "id")]
30 pub id: i64,
31 #[serde(rename = "node_id")]
32 pub node_id: String,
33 #[serde(rename = "number")]
34 pub number: i32,
35 #[serde(rename = "title")]
36 pub title: String,
37 #[serde(rename = "locked")]
38 pub locked: bool,
39 #[serde(rename = "active_lock_reason", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
40 pub active_lock_reason: Option<Option<String>>,
41 #[serde(rename = "assignees", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
42 pub assignees: Option<Option<Vec<models::SimpleUser>>>,
43 #[serde(rename = "user", deserialize_with = "Option::deserialize")]
44 pub user: Option<Box<models::NullableSimpleUser>>,
45 #[serde(rename = "labels")]
46 pub labels: Vec<models::IssueSearchResultItemLabelsInner>,
47 #[serde(rename = "state")]
48 pub state: String,
49 #[serde(rename = "state_reason", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
50 pub state_reason: Option<Option<String>>,
51 #[serde(rename = "assignee", deserialize_with = "Option::deserialize")]
52 pub assignee: Option<Box<models::NullableSimpleUser>>,
53 #[serde(rename = "milestone", deserialize_with = "Option::deserialize")]
54 pub milestone: Option<Box<models::NullableMilestone>>,
55 #[serde(rename = "comments")]
56 pub comments: i32,
57 #[serde(rename = "created_at")]
58 pub created_at: String,
59 #[serde(rename = "updated_at")]
60 pub updated_at: String,
61 #[serde(rename = "closed_at", deserialize_with = "Option::deserialize")]
62 pub closed_at: Option<String>,
63 #[serde(rename = "text_matches", skip_serializing_if = "Option::is_none")]
64 pub text_matches: Option<Vec<models::SearchResultTextMatchesInner>>,
65 #[serde(rename = "pull_request", skip_serializing_if = "Option::is_none")]
66 pub pull_request: Option<Box<models::IssuePullRequest>>,
67 #[serde(rename = "body", skip_serializing_if = "Option::is_none")]
68 pub body: Option<String>,
69 #[serde(rename = "score")]
70 pub score: f64,
71 #[serde(rename = "author_association")]
72 pub author_association: models::AuthorAssociation,
73 #[serde(rename = "draft", skip_serializing_if = "Option::is_none")]
74 pub draft: Option<bool>,
75 #[serde(rename = "repository", skip_serializing_if = "Option::is_none")]
76 pub repository: Option<Box<models::Repository>>,
77 #[serde(rename = "body_html", skip_serializing_if = "Option::is_none")]
78 pub body_html: Option<String>,
79 #[serde(rename = "body_text", skip_serializing_if = "Option::is_none")]
80 pub body_text: Option<String>,
81 #[serde(rename = "timeline_url", skip_serializing_if = "Option::is_none")]
82 pub timeline_url: Option<String>,
83 #[serde(rename = "performed_via_github_app", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
84 pub performed_via_github_app: Option<Option<Box<models::NullableIntegration>>>,
85 #[serde(rename = "reactions", skip_serializing_if = "Option::is_none")]
86 pub reactions: Option<Box<models::ReactionRollup>>,
87}
88
89impl IssueSearchResultItem {
90 pub fn new(url: String, repository_url: String, labels_url: String, comments_url: String, events_url: String, html_url: String, id: i64, node_id: String, number: i32, title: String, locked: bool, user: Option<models::NullableSimpleUser>, labels: Vec<models::IssueSearchResultItemLabelsInner>, state: String, assignee: Option<models::NullableSimpleUser>, milestone: Option<models::NullableMilestone>, comments: i32, created_at: String, updated_at: String, closed_at: Option<String>, score: f64, author_association: models::AuthorAssociation) -> IssueSearchResultItem {
92 IssueSearchResultItem {
93 url,
94 repository_url,
95 labels_url,
96 comments_url,
97 events_url,
98 html_url,
99 id,
100 node_id,
101 number,
102 title,
103 locked,
104 active_lock_reason: None,
105 assignees: None,
106 user: user.map(Box::new),
107 labels,
108 state,
109 state_reason: None,
110 assignee: assignee.map(Box::new),
111 milestone: milestone.map(Box::new),
112 comments,
113 created_at,
114 updated_at,
115 closed_at,
116 text_matches: None,
117 pull_request: None,
118 body: None,
119 score,
120 author_association,
121 draft: None,
122 repository: None,
123 body_html: None,
124 body_text: None,
125 timeline_url: None,
126 performed_via_github_app: None,
127 reactions: None,
128 }
129 }
130}
131