Class: LinearToonMcp::Tools::DeleteInitiative

Inherits:
Delete
  • Object
show all
Defined in:
lib/linear_toon_mcp/tools/delete_initiative.rb

Overview

Delete a Linear initiative by name or ID. Hard-deletes via initiativeDelete by default; pass archive: true to soft-delete via initiativeArchive. Hard deletes are refused when projects are still linked to the initiative — unlink first or pass archive: true.

Constant Summary collapse

MUTATION =
<<~GRAPHQL
  mutation($id: String!) {
    initiativeDelete(id: $id) { success entityId }
  }
GRAPHQL
ARCHIVE_MUTATION =
<<~GRAPHQL
  mutation($id: String!) {
    initiativeArchive(id: $id) { success entity { id name archivedAt } }
  }
GRAPHQL
LINKED_PROJECTS_QUERY =
<<~GRAPHQL
  query($id: String!) {
    initiative(id: $id) {
      projects(first: 1) { nodes { id } }
    }
  }
GRAPHQL

Instance Method Summary collapse

Methods inherited from Delete

entity, entity_label, entity_name, label, mutation, mutation_name, mutation_string, #variables

Methods inherited from Base

call, #call, error_response, success_response

Instance Method Details

#perform(query:, archive: false) ⇒ Object



47
48
49
50
# File 'lib/linear_toon_mcp/tools/delete_initiative.rb', line 47

def perform(query:, archive: false)
  initiative_id = Resolvers::Initiative.call(value: query)
  archive ? archive_initiative(initiative_id) : hard_delete(initiative_id, query)
end