1use crate::scalars::DateTime;
2use linear_schema::linear as schema;
3
4#[derive(cynic::QueryFragment, Debug, Clone)]
5#[cynic(schema = "linear")]
6pub struct User {
7 pub id: cynic::Id,
8 pub name: String,
9 #[cynic(rename = "displayName")]
10 pub display_name: String,
11 pub email: String,
12}
13
14#[derive(cynic::QueryFragment, Debug, Clone)]
15#[cynic(schema = "linear")]
16pub struct Team {
17 pub id: cynic::Id,
18 pub key: String,
19 pub name: String,
20}
21
22#[derive(cynic::QueryFragment, Debug, Clone)]
23#[cynic(schema = "linear")]
24pub struct WorkflowState {
25 pub id: cynic::Id,
26 pub name: String,
27 #[cynic(rename = "type")]
28 pub state_type: String,
29}
30
31#[derive(cynic::QueryFragment, Debug, Clone)]
32#[cynic(schema = "linear")]
33pub struct Project {
34 pub id: cynic::Id,
35 pub name: String,
36}
37
38#[derive(cynic::QueryFragment, Debug, Clone)]
39#[cynic(schema = "linear")]
40pub struct Issue {
41 pub id: cynic::Id,
42 pub identifier: String,
43 pub title: String,
44 pub description: Option<String>,
45 pub priority: f64,
46 pub url: String,
47 #[cynic(rename = "createdAt")]
48 pub created_at: DateTime,
49 #[cynic(rename = "updatedAt")]
50 pub updated_at: DateTime,
51 pub team: Team,
52 pub state: Option<WorkflowState>,
53 pub assignee: Option<User>,
54 pub project: Option<Project>,
55}
56
57#[derive(cynic::QueryFragment, Debug, Clone)]
58#[cynic(schema = "linear")]
59pub struct PageInfo {
60 #[cynic(rename = "hasNextPage")]
61 pub has_next_page: bool,
62 #[cynic(rename = "endCursor")]
63 pub end_cursor: Option<String>,
64}
65
66#[derive(cynic::QueryFragment, Debug, Clone)]
67#[cynic(schema = "linear")]
68pub struct IssueConnection {
69 pub nodes: Vec<Issue>,
70 #[cynic(rename = "pageInfo")]
71 pub page_info: PageInfo,
72}