feat: add teams end point

This commit is contained in:
Muhsin Keloth
2024-05-02 16:11:21 +05:30
parent ead7cc0c36
commit 68cb6b19b0
3 changed files with 48 additions and 16 deletions
+2 -1
View File
@@ -228,7 +228,8 @@ Rails.application.routes.draw do
end
resource :linear, controller: 'linear', only: [] do
collection do
post :list
get :teams
get :labels
end
end
end
+15 -5
View File
@@ -1,17 +1,27 @@
class Integrations::Linear::ProcessorService
pattr_initialize [:account!, :conversation!]
def create_issue; end
def teams
response = linear_client.teams
return response if response[:error]
def link_issue; end
response['teams']['nodes'].map(&:as_json)
end
def list_issues
issues = linear_client.list_issues
issues.map(&:as_json)
# get labels for a team
def labels(team_id)
response = linear_client.labels(team_id)
return response if response[:error]
response['team']['labels']['nodes'].map(&:as_json)
end
private
def conversation_link
"#{ENV.fetch('FRONTEND_URL', nil)}/app/accounts/#{account.id}/conversations/#{conversation.display_id}"
end
def linear_hook
@linear_hook ||= account.hooks.find_by!(app_id: 'linear')
end
+31 -10
View File
@@ -16,24 +16,45 @@ class Linear
)
end
def list_issues
def teams
query = <<~GRAPHQL
query {
issues(first: 5) {
teams {
nodes {
id
title
name
}
}
}
GRAPHQL
execute_query(query)
end
begin
response = @client.query(query)
response.data.issues.nodes
rescue StandardError => e
# return error message
e.message
end
def labels(team_id)
query = <<~GRAPHQL
query {
team(id: "#{team_id}") {
labels {
nodes {
id
name
}
}
}
}
GRAPHQL
execute_query(query)
end
private
def execute_query(query)
@client.query(query).data.to_h
rescue Graphlient::Errors::GraphQLError => e
{ error: "GraphQL Error: #{e.message}" }
rescue Graphlient::Errors::ServerError => e
{ error: "Server Error: #{e.message}" }
rescue StandardError => e
{ error: "Unexpected Error: #{e.message}" }
end
end