feat: add create issue API

This commit is contained in:
Muhsin Keloth
2024-05-09 12:23:14 +05:30
parent 0268d544d1
commit 1ddc05dadb
6 changed files with 63 additions and 2 deletions
@@ -20,6 +20,13 @@ class Integrations::Linear::ProcessorService
}
end
def create_issue(team_id, title, description)
response = linear_client.create_issue(team_id, title, description)
return response if response[:error]
response
end
private
def linear_hook
+21
View File
@@ -1,6 +1,7 @@
require 'graphlient'
require_relative 'linear_queries'
require_relative 'linear_mutations'
class Linear
BASE_URL = 'https://api.linear.app/graphql'.freeze
@@ -27,6 +28,20 @@ class Linear
execute_query(LinearQueries.team_entites_query(team_id))
end
def create_issue(team_id, title, description)
raise ArgumentError, 'Missing team id' if team_id.blank?
raise ArgumentError, 'Missing title' if title.blank?
raise ArgumentError, 'Missing description' if description.blank?
variables = {
title: title,
description: description,
teamId: team_id
}
execute_mutation(LinearMutations.issue_create(variables))
end
private
def execute_query(query)
@@ -41,6 +56,12 @@ class Linear
log_and_return_error("Unexpected Error: #{e.message}")
end
def execute_mutation(query)
response = @client.query(query)
log_and_return_error("Error creating issue: #{response.errors.messages}") if response.data.nil? && response.errors.any?
response.data.to_h
end
def log_and_return_error(message)
Rails.logger.error message
{ error: message }
+16
View File
@@ -0,0 +1,16 @@
module LinearMutations
def self.issue_create(input)
graphql_input = input.map { |key, value| "#{key}: \"#{value}\"" }.join(', ')
<<~GRAPHQL
mutation {
issueCreate(input: { #{graphql_input} }) {
success
issue {
id
title
}
}
}
GRAPHQL
end
end