1use crate::filters::IssueFilter;
2use crate::filters::IssueLabelFilter;
3use crate::filters::ProjectFilter;
4use crate::filters::TeamFilter;
5use crate::filters::UserFilter;
6use crate::filters::WorkflowStateFilter;
7use crate::types::Issue;
8use crate::types::IssueCommentConnection;
9use crate::types::IssueConnection;
10use crate::types::IssueLabelConnection;
11use crate::types::IssueSearchPayload;
12use crate::types::ProjectConnection;
13use crate::types::TeamConnection;
14use crate::types::UserConnection;
15use crate::types::WorkflowStateConnection;
16use linear_schema::linear as schema;
17
18#[derive(cynic::QueryVariables, Debug, Clone)]
19pub struct IssuesArguments {
20 pub first: Option<i32>,
21 pub after: Option<String>,
22 pub filter: Option<IssueFilter>,
23}
24
25#[derive(cynic::QueryFragment, Debug)]
26#[cynic(
27 graphql_type = "Query",
28 schema = "linear",
29 variables = "IssuesArguments"
30)]
31pub struct IssuesQuery {
32 #[arguments(first: $first, after: $after, filter: $filter)]
33 pub issues: IssueConnection,
34}
35
36#[derive(cynic::QueryVariables, Debug, Clone)]
37pub struct IssueByIdArguments {
38 pub id: String,
39}
40
41#[derive(cynic::QueryFragment, Debug)]
42#[cynic(
43 graphql_type = "Query",
44 schema = "linear",
45 variables = "IssueByIdArguments"
46)]
47pub struct IssueByIdQuery {
48 #[arguments(id: $id)]
49 pub issue: Option<Issue>,
50}
51
52#[derive(cynic::QueryVariables, Debug, Clone)]
53pub struct SearchIssuesArguments {
54 pub term: String,
55 #[cynic(rename = "includeComments")]
56 pub include_comments: Option<bool>,
57 pub first: Option<i32>,
58 pub after: Option<String>,
59 pub filter: Option<IssueFilter>,
60}
61
62#[derive(cynic::QueryFragment, Debug)]
63#[cynic(
64 graphql_type = "Query",
65 schema = "linear",
66 variables = "SearchIssuesArguments"
67)]
68pub struct SearchIssuesQuery {
69 #[arguments(term: $term, includeComments: $include_comments, first: $first, after: $after, filter: $filter)]
70 #[cynic(rename = "searchIssues")]
71 pub search_issues: IssueSearchPayload,
72}
73
74#[derive(cynic::QueryVariables, Debug, Clone)]
79pub struct UsersArguments {
80 pub first: Option<i32>,
81 pub after: Option<String>,
82 pub filter: Option<UserFilter>,
83}
84
85#[derive(cynic::QueryFragment, Debug)]
86#[cynic(
87 graphql_type = "Query",
88 schema = "linear",
89 variables = "UsersArguments"
90)]
91pub struct UsersQuery {
92 #[arguments(first: $first, after: $after, filter: $filter)]
93 pub users: UserConnection,
94}
95
96#[derive(cynic::QueryVariables, Debug, Clone)]
97pub struct TeamsArguments {
98 pub first: Option<i32>,
99 pub after: Option<String>,
100 pub filter: Option<TeamFilter>,
101}
102
103#[derive(cynic::QueryFragment, Debug)]
104#[cynic(
105 graphql_type = "Query",
106 schema = "linear",
107 variables = "TeamsArguments"
108)]
109pub struct TeamsQuery {
110 #[arguments(first: $first, after: $after, filter: $filter)]
111 pub teams: TeamConnection,
112}
113
114#[derive(cynic::QueryVariables, Debug, Clone)]
115pub struct ProjectsArguments {
116 pub first: Option<i32>,
117 pub after: Option<String>,
118 pub filter: Option<ProjectFilter>,
119}
120
121#[derive(cynic::QueryFragment, Debug)]
122#[cynic(
123 graphql_type = "Query",
124 schema = "linear",
125 variables = "ProjectsArguments"
126)]
127pub struct ProjectsQuery {
128 #[arguments(first: $first, after: $after, filter: $filter)]
129 pub projects: ProjectConnection,
130}
131
132#[derive(cynic::QueryVariables, Debug, Clone)]
133pub struct WorkflowStatesArguments {
134 pub first: Option<i32>,
135 pub after: Option<String>,
136 pub filter: Option<WorkflowStateFilter>,
137}
138
139#[derive(cynic::QueryFragment, Debug)]
140#[cynic(
141 graphql_type = "Query",
142 schema = "linear",
143 variables = "WorkflowStatesArguments"
144)]
145pub struct WorkflowStatesQuery {
146 #[arguments(first: $first, after: $after, filter: $filter)]
147 #[cynic(rename = "workflowStates")]
148 pub workflow_states: WorkflowStateConnection,
149}
150
151#[derive(cynic::QueryVariables, Debug, Clone)]
152pub struct IssueLabelsArguments {
153 pub first: Option<i32>,
154 pub after: Option<String>,
155 pub filter: Option<IssueLabelFilter>,
156}
157
158#[derive(cynic::QueryFragment, Debug)]
159#[cynic(
160 graphql_type = "Query",
161 schema = "linear",
162 variables = "IssueLabelsArguments"
163)]
164pub struct IssueLabelsQuery {
165 #[arguments(first: $first, after: $after, filter: $filter)]
166 #[cynic(rename = "issueLabels")]
167 pub issue_labels: IssueLabelConnection,
168}
169
170#[derive(cynic::QueryFragment, Debug, Clone)]
175#[cynic(schema = "linear")]
176pub struct IssueRelation {
177 pub id: cynic::Id,
178 #[cynic(rename = "relatedIssue")]
179 pub related_issue: RelatedIssue,
180}
181
182#[derive(cynic::QueryFragment, Debug, Clone)]
183#[cynic(schema = "linear", graphql_type = "Issue")]
184pub struct RelatedIssue {
185 pub id: cynic::Id,
186}
187
188#[derive(cynic::QueryFragment, Debug, Clone)]
189#[cynic(schema = "linear")]
190pub struct IssueRelationConnection {
191 pub nodes: Vec<IssueRelation>,
192}
193
194#[derive(cynic::QueryFragment, Debug, Clone)]
195#[cynic(schema = "linear", graphql_type = "Issue")]
196pub struct IssueWithRelations {
197 pub id: cynic::Id,
198 pub relations: IssueRelationConnection,
199 #[cynic(rename = "inverseRelations")]
200 pub inverse_relations: IssueRelationConnection,
201}
202
203#[derive(cynic::QueryVariables, Debug, Clone)]
204pub struct IssueRelationsArguments {
205 pub id: String,
206}
207
208#[derive(cynic::QueryFragment, Debug)]
209#[cynic(
210 graphql_type = "Query",
211 schema = "linear",
212 variables = "IssueRelationsArguments"
213)]
214pub struct IssueRelationsQuery {
215 #[arguments(id: $id)]
216 pub issue: Option<IssueWithRelations>,
217}
218
219#[derive(cynic::QueryFragment, Debug, Clone)]
224#[cynic(
225 schema = "linear",
226 graphql_type = "Issue",
227 variables = "IssueCommentsArguments"
228)]
229pub struct IssueWithComments {
230 pub id: cynic::Id,
231 pub identifier: String,
232 #[arguments(first: $first, after: $after)]
233 pub comments: IssueCommentConnection,
234}
235
236#[derive(cynic::QueryVariables, Debug, Clone)]
237pub struct IssueCommentsArguments {
238 pub id: String,
239 pub first: Option<i32>,
240 pub after: Option<String>,
241}
242
243#[derive(cynic::QueryFragment, Debug)]
244#[cynic(
245 graphql_type = "Query",
246 schema = "linear",
247 variables = "IssueCommentsArguments"
248)]
249pub struct IssueCommentsQuery {
250 #[arguments(id: $id)]
251 pub issue: Option<IssueWithComments>,
252}