linear_queries/
mutations.rs

1use crate::scalars::DateTime;
2use crate::types::Issue;
3use linear_schema::linear as schema;
4
5#[derive(cynic::InputObject, Clone, Debug, Default)]
6#[cynic(schema = "linear")]
7pub struct IssueCreateInput {
8    #[cynic(rename = "teamId")]
9    pub team_id: String,
10    #[cynic(skip_serializing_if = "Option::is_none")]
11    pub title: Option<String>,
12    #[cynic(skip_serializing_if = "Option::is_none")]
13    pub description: Option<String>,
14    #[cynic(skip_serializing_if = "Option::is_none")]
15    pub priority: Option<i32>,
16    #[cynic(rename = "assigneeId", skip_serializing_if = "Option::is_none")]
17    pub assignee_id: Option<String>,
18    #[cynic(rename = "stateId", skip_serializing_if = "Option::is_none")]
19    pub state_id: Option<String>,
20    #[cynic(rename = "labelIds", skip_serializing_if = "Option::is_none")]
21    pub label_ids: Option<Vec<String>>,
22    #[cynic(rename = "projectId", skip_serializing_if = "Option::is_none")]
23    pub project_id: Option<String>,
24    #[cynic(rename = "parentId", skip_serializing_if = "Option::is_none")]
25    pub parent_id: Option<String>,
26}
27
28#[derive(cynic::QueryFragment, Debug, Clone)]
29#[cynic(schema = "linear")]
30pub struct IssuePayload {
31    pub success: bool,
32    pub issue: Option<Issue>,
33}
34
35#[derive(cynic::QueryVariables, Debug, Clone)]
36pub struct IssueCreateArguments {
37    pub input: IssueCreateInput,
38}
39
40#[derive(cynic::QueryFragment, Debug)]
41#[cynic(
42    graphql_type = "Mutation",
43    schema = "linear",
44    variables = "IssueCreateArguments"
45)]
46pub struct IssueCreateMutation {
47    #[arguments(input: $input)]
48    #[cynic(rename = "issueCreate")]
49    pub issue_create: IssuePayload,
50}
51
52#[derive(cynic::InputObject, Clone, Debug, Default)]
53#[cynic(schema = "linear")]
54pub struct CommentCreateInput {
55    #[cynic(rename = "issueId")]
56    pub issue_id: String,
57    #[cynic(skip_serializing_if = "Option::is_none")]
58    pub body: Option<String>,
59    #[cynic(rename = "parentId", skip_serializing_if = "Option::is_none")]
60    pub parent_id: Option<String>,
61}
62
63#[derive(cynic::QueryFragment, Debug, Clone)]
64#[cynic(schema = "linear")]
65pub struct Comment {
66    pub id: cynic::Id,
67    pub body: String,
68    #[cynic(rename = "createdAt")]
69    pub created_at: DateTime,
70}
71
72#[derive(cynic::QueryFragment, Debug, Clone)]
73#[cynic(schema = "linear")]
74pub struct CommentPayload {
75    pub success: bool,
76    pub comment: Option<Comment>,
77}
78
79#[derive(cynic::QueryVariables, Debug, Clone)]
80pub struct CommentCreateArguments {
81    pub input: CommentCreateInput,
82}
83
84#[derive(cynic::QueryFragment, Debug)]
85#[cynic(
86    graphql_type = "Mutation",
87    schema = "linear",
88    variables = "CommentCreateArguments"
89)]
90pub struct CommentCreateMutation {
91    #[arguments(input: $input)]
92    #[cynic(rename = "commentCreate")]
93    pub comment_create: CommentPayload,
94}
95
96#[derive(cynic::QueryVariables, Debug, Clone)]
97pub struct IssueArchiveArguments {
98    pub id: String,
99}
100
101#[derive(cynic::QueryFragment, Debug, Clone)]
102#[cynic(schema = "linear")]
103pub struct IssueArchivePayload {
104    pub success: bool,
105}
106
107#[derive(cynic::QueryFragment, Debug)]
108#[cynic(
109    graphql_type = "Mutation",
110    schema = "linear",
111    variables = "IssueArchiveArguments"
112)]
113pub struct IssueArchiveMutation {
114    #[arguments(id: $id)]
115    #[cynic(rename = "issueArchive")]
116    pub issue_archive: IssueArchivePayload,
117}