Class: LinearToonMcp::Tools::ListStatusUpdates
- Defined in:
- lib/linear_toon_mcp/tools/list_status_updates.rb
Overview
List status updates posted to a Linear project or initiative. Exactly one of project: or initiative: must be provided.
Constant Summary collapse
- READ_FIELDS =
<<~GRAPHQL id body health isStale isDiffHidden createdAt updatedAt editedAt archivedAt url user { id name } GRAPHQL
- PROJECT_QUERY =
<<~GRAPHQL query($filter: ProjectUpdateFilter, $first: Int, $after: String, $orderBy: PaginationOrderBy, $includeArchived: Boolean) { projectUpdates(filter: $filter, first: $first, after: $after, orderBy: $orderBy, includeArchived: $includeArchived) { nodes { #{READ_FIELDS.strip} project { id name } } pageInfo { hasNextPage endCursor } } } GRAPHQL
- INITIATIVE_QUERY =
<<~GRAPHQL query($filter: InitiativeUpdateFilter, $first: Int, $after: String, $orderBy: PaginationOrderBy, $includeArchived: Boolean) { initiativeUpdates(filter: $filter, first: $first, after: $after, orderBy: $orderBy, includeArchived: $includeArchived) { nodes { #{READ_FIELDS.strip} initiative { id name } } pageInfo { hasNextPage endCursor } } } GRAPHQL
Instance Method Summary collapse
-
#perform(project: nil, initiative: nil, cursor: nil, limit: nil, orderBy: nil, includeArchived: false) ⇒ Object
standard:disable Naming/VariableName.
Methods inherited from Base
call, #call, error_response, success_response
Instance Method Details
#perform(project: nil, initiative: nil, cursor: nil, limit: nil, orderBy: nil, includeArchived: false) ⇒ Object
standard:disable Naming/VariableName
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
# File 'lib/linear_toon_mcp/tools/list_status_updates.rb', line 67 def perform(project: nil, initiative: nil, cursor: nil, limit: nil, orderBy: nil, includeArchived: false) parent = exactly_one_parent(project: project, initiative: initiative) variables = pagination_variables(cursor: cursor, limit: limit, orderBy: orderBy, includeArchived: includeArchived) case parent in [:project, value] project_id = Resolvers::Project.call(value: value) variables[:filter] = {project: {id: {eq: project_id}}} data = client.query(PROJECT_QUERY, variables: variables) data["projectUpdates"] or raise Error, "Unexpected response: missing projectUpdates field" in [:initiative, value] initiative_id = Resolvers::Initiative.call(value: value) variables[:filter] = {initiative: {id: {eq: initiative_id}}} data = client.query(INITIATIVE_QUERY, variables: variables) data["initiativeUpdates"] or raise Error, "Unexpected response: missing initiativeUpdates field" end end |