Class: LinearApi::Issue
- Inherits:
-
Object
- Object
- LinearApi::Issue
- Defined in:
- lib/linear_api/issue.rb
Overview
Represents a Linear issue
Constant Summary collapse
- CREATE_MUTATION =
==========================================================================
GraphQL Mutations
<<~GRAPHQL mutation CreateIssue($input: IssueCreateInput!) { issueCreate(input: $input) { success issue { id identifier title url priority dueDate estimate state { id name } } } } GRAPHQL
- UPDATE_MUTATION =
<<~GRAPHQL mutation UpdateIssue($id: String!, $input: IssueUpdateInput!) { issueUpdate(id: $id, input: $input) { success issue { id identifier title priority dueDate estimate state { id name } labels { nodes { id name } } } } } GRAPHQL
- ADD_COMMENT_MUTATION =
<<~GRAPHQL mutation AddComment($issueId: String!, $body: String!) { commentCreate(input: { issueId: $issueId, body: $body }) { success comment { id body createdAt } } } GRAPHQL
- ARCHIVE_MUTATION =
<<~GRAPHQL mutation ArchiveIssue($id: String!) { issueArchive(id: $id) { success } } GRAPHQL
- UNARCHIVE_MUTATION =
<<~GRAPHQL mutation UnarchiveIssue($id: String!) { issueUnarchive(id: $id) { success } } GRAPHQL
- LINK_PR_MUTATION =
<<~GRAPHQL mutation LinkPR($issueId: String!, $url: String!) { attachmentLinkURL(issueId: $issueId, url: $url) { success attachment { id url } } } GRAPHQL
- GET_BY_IDENTIFIER_QUERY =
Direct lookup by identifier (exact match, replaces search-based lookup)
<<~GRAPHQL query GetIssueByIdentifier($filter: IssueFilter!) { issues(filter: $filter, first: 1) { nodes { id identifier title description url priority dueDate estimate state { id name type } labels { nodes { id name } } assignee { id name } project { id name } comments { nodes { id body createdAt user { name } } } } } } GRAPHQL
- SEARCH_QUERY =
Full-text search (use search_issues for fuzzy matching)
<<~GRAPHQL query SearchIssues($term: String!, $first: Int!) { searchIssues(term: $term, first: $first) { nodes { id identifier title description url priority dueDate estimate state { id name type } labels { nodes { id name } } assignee { id name } project { id name } } } } GRAPHQL
- LIST_QUERY =
<<~GRAPHQL query ListIssues($teamId: String!, $first: Int!) { team(id: $teamId) { issues(first: $first, orderBy: updatedAt) { nodes { id identifier title priority dueDate estimate state { id name type } labels { nodes { id name } } } } } } GRAPHQL
- LIST_PAGINATED_QUERY =
<<~GRAPHQL query ListIssuesPaginated($teamId: String!, $first: Int!, $after: String) { team(id: $teamId) { issues(first: $first, after: $after, orderBy: updatedAt) { nodes { id identifier title priority dueDate estimate state { id name type } labels { nodes { id name } } } pageInfo { hasNextPage endCursor } } } } GRAPHQL
- GET_BY_ID_QUERY =
<<~GRAPHQL query GetIssueById($id: String!) { issue(id: $id) { id identifier title description url priority dueDate estimate state { id name type } labels { nodes { id name } } assignee { id name } project { id name } } } GRAPHQL
- BATCH_GET_QUERY =
<<~GRAPHQL query BatchGetIssues($filter: IssueFilter!) { issues(filter: $filter) { nodes { id identifier title priority dueDate estimate state { id name type } labels { nodes { id name } } assignee { id name } } } } GRAPHQL
- SUB_ISSUES_QUERY =
<<~GRAPHQL query GetSubIssues($id: String!) { issue(id: $id) { children { nodes { id identifier title state { id name } priority } } } } GRAPHQL
Instance Attribute Summary collapse
-
#assignee ⇒ Object
readonly
Model ==========================================================================.
-
#comments ⇒ Object
readonly
Model ==========================================================================.
-
#description ⇒ Object
readonly
Model ==========================================================================.
-
#due_date ⇒ Object
readonly
Model ==========================================================================.
-
#estimate ⇒ Object
readonly
Model ==========================================================================.
-
#id ⇒ Object
readonly
Model ==========================================================================.
-
#identifier ⇒ Object
readonly
Model ==========================================================================.
-
#labels ⇒ Object
readonly
Model ==========================================================================.
-
#priority ⇒ Object
readonly
Model ==========================================================================.
-
#project ⇒ Object
readonly
Model ==========================================================================.
-
#raw ⇒ Object
readonly
Model ==========================================================================.
-
#state ⇒ Object
readonly
Model ==========================================================================.
-
#title ⇒ Object
readonly
Model ==========================================================================.
-
#url ⇒ Object
readonly
Model ==========================================================================.
Instance Method Summary collapse
-
#initialize(data) ⇒ Issue
constructor
A new instance of Issue.
- #label_names ⇒ Object
- #state_name ⇒ Object
- #to_h ⇒ Object
Constructor Details
#initialize(data) ⇒ Issue
Returns a new instance of Issue.
337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 |
# File 'lib/linear_api/issue.rb', line 337 def initialize(data) @raw = data @id = data['id'] @identifier = data['identifier'] @title = data['title'] @description = data['description'] @url = data['url'] @priority = data['priority'] @due_date = data['dueDate'] @estimate = data['estimate'] @state = data['state'] @labels = (data.dig('labels', 'nodes') || []) @assignee = data['assignee'] @project = data['project'] @comments = (data.dig('comments', 'nodes') || []) end |
Instance Attribute Details
#assignee ⇒ Object (readonly)
==========================================================================
Model
333 334 335 |
# File 'lib/linear_api/issue.rb', line 333 def assignee @assignee end |
#comments ⇒ Object (readonly)
==========================================================================
Model
333 334 335 |
# File 'lib/linear_api/issue.rb', line 333 def comments @comments end |
#description ⇒ Object (readonly)
==========================================================================
Model
333 334 335 |
# File 'lib/linear_api/issue.rb', line 333 def description @description end |
#due_date ⇒ Object (readonly)
==========================================================================
Model
333 334 335 |
# File 'lib/linear_api/issue.rb', line 333 def due_date @due_date end |
#estimate ⇒ Object (readonly)
==========================================================================
Model
333 334 335 |
# File 'lib/linear_api/issue.rb', line 333 def estimate @estimate end |
#id ⇒ Object (readonly)
==========================================================================
Model
333 334 335 |
# File 'lib/linear_api/issue.rb', line 333 def id @id end |
#identifier ⇒ Object (readonly)
==========================================================================
Model
333 334 335 |
# File 'lib/linear_api/issue.rb', line 333 def identifier @identifier end |
#labels ⇒ Object (readonly)
==========================================================================
Model
333 334 335 |
# File 'lib/linear_api/issue.rb', line 333 def labels @labels end |
#priority ⇒ Object (readonly)
==========================================================================
Model
333 334 335 |
# File 'lib/linear_api/issue.rb', line 333 def priority @priority end |
#project ⇒ Object (readonly)
==========================================================================
Model
333 334 335 |
# File 'lib/linear_api/issue.rb', line 333 def project @project end |
#raw ⇒ Object (readonly)
==========================================================================
Model
333 334 335 |
# File 'lib/linear_api/issue.rb', line 333 def raw @raw end |
#state ⇒ Object (readonly)
==========================================================================
Model
333 334 335 |
# File 'lib/linear_api/issue.rb', line 333 def state @state end |
#title ⇒ Object (readonly)
==========================================================================
Model
333 334 335 |
# File 'lib/linear_api/issue.rb', line 333 def title @title end |
#url ⇒ Object (readonly)
==========================================================================
Model
333 334 335 |
# File 'lib/linear_api/issue.rb', line 333 def url @url end |
Instance Method Details
#label_names ⇒ Object
358 359 360 |
# File 'lib/linear_api/issue.rb', line 358 def label_names labels.map { |l| l['name'] } end |
#state_name ⇒ Object
354 355 356 |
# File 'lib/linear_api/issue.rb', line 354 def state_name state&.dig('name') end |
#to_h ⇒ Object
362 363 364 365 366 367 368 369 370 371 372 373 374 375 |
# File 'lib/linear_api/issue.rb', line 362 def to_h { id: id, identifier: identifier, title: title, description: description, url: url, priority: priority, due_date: due_date, estimate: estimate, state: state_name, labels: label_names } end |