1use crate::scalars::DateTime;
2use crate::scalars::TimelessDate;
3use crate::types::Issue;
4use linear_schema::linear as schema;
5
6#[derive(cynic::InputObject, Clone, Debug, Default)]
7#[cynic(schema = "linear")]
8pub struct IssueCreateInput {
9 #[cynic(rename = "teamId")]
10 pub team_id: String,
11 #[cynic(skip_serializing_if = "Option::is_none")]
12 pub title: Option<String>,
13 #[cynic(skip_serializing_if = "Option::is_none")]
14 pub description: Option<String>,
15 #[cynic(skip_serializing_if = "Option::is_none")]
16 pub priority: Option<i32>,
17 #[cynic(rename = "assigneeId", skip_serializing_if = "Option::is_none")]
18 pub assignee_id: Option<String>,
19 #[cynic(rename = "stateId", skip_serializing_if = "Option::is_none")]
20 pub state_id: Option<String>,
21 #[cynic(rename = "labelIds", skip_serializing_if = "Option::is_none")]
22 pub label_ids: Option<Vec<String>>,
23 #[cynic(rename = "projectId", skip_serializing_if = "Option::is_none")]
24 pub project_id: Option<String>,
25 #[cynic(rename = "parentId", skip_serializing_if = "Option::is_none")]
26 pub parent_id: Option<String>,
27}
28
29#[derive(cynic::QueryFragment, Debug, Clone)]
30#[cynic(schema = "linear")]
31pub struct IssuePayload {
32 pub success: bool,
33 pub issue: Option<Issue>,
34}
35
36#[derive(cynic::QueryVariables, Debug, Clone)]
37pub struct IssueCreateArguments {
38 pub input: IssueCreateInput,
39}
40
41#[derive(cynic::QueryFragment, Debug)]
42#[cynic(
43 graphql_type = "Mutation",
44 schema = "linear",
45 variables = "IssueCreateArguments"
46)]
47pub struct IssueCreateMutation {
48 #[arguments(input: $input)]
49 #[cynic(rename = "issueCreate")]
50 pub issue_create: IssuePayload,
51}
52
53#[derive(cynic::InputObject, Clone, Debug, Default)]
54#[cynic(schema = "linear")]
55pub struct IssueUpdateInput {
56 #[cynic(skip_serializing_if = "Option::is_none")]
57 pub title: Option<String>,
58 #[cynic(skip_serializing_if = "Option::is_none")]
59 pub description: Option<String>,
60 #[cynic(skip_serializing_if = "Option::is_none")]
61 pub priority: Option<i32>,
62 #[cynic(rename = "assigneeId", skip_serializing_if = "Option::is_none")]
63 pub assignee_id: Option<String>,
64 #[cynic(rename = "stateId", skip_serializing_if = "Option::is_none")]
65 pub state_id: Option<String>,
66 #[cynic(rename = "projectId", skip_serializing_if = "Option::is_none")]
67 pub project_id: Option<String>,
68 #[cynic(rename = "parentId", skip_serializing_if = "Option::is_none")]
69 pub parent_id: Option<String>,
70 #[cynic(rename = "labelIds", skip_serializing_if = "Option::is_none")]
71 pub label_ids: Option<Vec<String>>,
72 #[cynic(rename = "addedLabelIds", skip_serializing_if = "Option::is_none")]
73 pub added_label_ids: Option<Vec<String>>,
74 #[cynic(rename = "removedLabelIds", skip_serializing_if = "Option::is_none")]
75 pub removed_label_ids: Option<Vec<String>>,
76 #[cynic(rename = "dueDate", skip_serializing_if = "Option::is_none")]
77 pub due_date: Option<TimelessDate>,
78}
79
80#[derive(cynic::QueryVariables, Debug, Clone)]
81pub struct IssueUpdateArguments {
82 pub id: String,
83 pub input: IssueUpdateInput,
84}
85
86#[derive(cynic::QueryFragment, Debug)]
87#[cynic(
88 graphql_type = "Mutation",
89 schema = "linear",
90 variables = "IssueUpdateArguments"
91)]
92pub struct IssueUpdateMutation {
93 #[arguments(id: $id, input: $input)]
94 #[cynic(rename = "issueUpdate")]
95 pub issue_update: IssuePayload,
96}
97
98#[derive(cynic::InputObject, Clone, Debug, Default)]
99#[cynic(schema = "linear")]
100pub struct CommentCreateInput {
101 #[cynic(rename = "issueId")]
102 pub issue_id: String,
103 #[cynic(skip_serializing_if = "Option::is_none")]
104 pub body: Option<String>,
105 #[cynic(rename = "parentId", skip_serializing_if = "Option::is_none")]
106 pub parent_id: Option<String>,
107}
108
109#[derive(cynic::QueryFragment, Debug, Clone)]
110#[cynic(schema = "linear")]
111pub struct Comment {
112 pub id: cynic::Id,
113 pub body: String,
114 #[cynic(rename = "createdAt")]
115 pub created_at: DateTime,
116}
117
118#[derive(cynic::QueryFragment, Debug, Clone)]
119#[cynic(schema = "linear")]
120pub struct CommentPayload {
121 pub success: bool,
122 pub comment: Option<Comment>,
123}
124
125#[derive(cynic::QueryVariables, Debug, Clone)]
126pub struct CommentCreateArguments {
127 pub input: CommentCreateInput,
128}
129
130#[derive(cynic::QueryFragment, Debug)]
131#[cynic(
132 graphql_type = "Mutation",
133 schema = "linear",
134 variables = "CommentCreateArguments"
135)]
136pub struct CommentCreateMutation {
137 #[arguments(input: $input)]
138 #[cynic(rename = "commentCreate")]
139 pub comment_create: CommentPayload,
140}
141
142#[derive(cynic::QueryVariables, Debug, Clone)]
143pub struct IssueArchiveArguments {
144 pub id: String,
145}
146
147#[derive(cynic::QueryFragment, Debug, Clone)]
148#[cynic(schema = "linear")]
149pub struct IssueArchivePayload {
150 pub success: bool,
151}
152
153#[derive(cynic::QueryFragment, Debug)]
154#[cynic(
155 graphql_type = "Mutation",
156 schema = "linear",
157 variables = "IssueArchiveArguments"
158)]
159pub struct IssueArchiveMutation {
160 #[arguments(id: $id)]
161 #[cynic(rename = "issueArchive")]
162 pub issue_archive: IssueArchivePayload,
163}
164
165#[derive(cynic::Enum, Clone, Copy, Debug)]
170#[cynic(schema = "linear")]
171pub enum IssueRelationType {
172 #[cynic(rename = "blocks")]
173 Blocks,
174 #[cynic(rename = "duplicate")]
175 Duplicate,
176 #[cynic(rename = "related")]
177 Related,
178 #[cynic(rename = "similar")]
179 Similar,
180}
181
182#[derive(cynic::InputObject, Clone, Debug)]
183#[cynic(schema = "linear")]
184pub struct IssueRelationCreateInput {
185 #[cynic(rename = "issueId")]
186 pub issue_id: String,
187 #[cynic(rename = "relatedIssueId")]
188 pub related_issue_id: String,
189 #[cynic(rename = "type")]
190 pub relation_type: IssueRelationType,
191}
192
193#[derive(cynic::QueryFragment, Debug, Clone)]
194#[cynic(schema = "linear")]
195pub struct IssueRelationPayload {
196 pub success: bool,
197}
198
199#[derive(cynic::QueryVariables, Debug, Clone)]
200pub struct IssueRelationCreateArguments {
201 pub input: IssueRelationCreateInput,
202}
203
204#[derive(cynic::QueryFragment, Debug)]
205#[cynic(
206 graphql_type = "Mutation",
207 schema = "linear",
208 variables = "IssueRelationCreateArguments"
209)]
210pub struct IssueRelationCreateMutation {
211 #[arguments(input: $input)]
212 #[cynic(rename = "issueRelationCreate")]
213 pub issue_relation_create: IssueRelationPayload,
214}
215
216#[derive(cynic::QueryFragment, Debug, Clone)]
217#[cynic(schema = "linear")]
218pub struct DeletePayload {
219 pub success: bool,
220}
221
222#[derive(cynic::QueryVariables, Debug, Clone)]
223pub struct IssueRelationDeleteArguments {
224 pub id: String,
225}
226
227#[derive(cynic::QueryFragment, Debug)]
228#[cynic(
229 graphql_type = "Mutation",
230 schema = "linear",
231 variables = "IssueRelationDeleteArguments"
232)]
233pub struct IssueRelationDeleteMutation {
234 #[arguments(id: $id)]
235 #[cynic(rename = "issueRelationDelete")]
236 pub issue_relation_delete: DeletePayload,
237}