linear_queries/
types.rs

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}