Class: OmnifocusMcp::Resources::ProjectResource

Inherits:
Base
  • Object
show all
Defined in:
lib/omnifocus_mcp/resources/project_resource.rb

Overview

Tasks in a specific OmniFocus project, addressed by name.

‘#content` (via `#payload`) is the sole entry point.

Constant Summary collapse

FIELDS =
%w[
  id name flagged dueDate deferDate taskStatus
  tagNames parentId note estimatedMinutes
].freeze

Instance Method Summary collapse

Methods inherited from Base

#content, #items_or_empty

Instance Method Details

#payloadObject



21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/omnifocus_mcp/resources/project_resource.rb', line 21

def payload
  name = params[:name].to_s
  OmnifocusMcp.logger.warn("[resource:project] Reading project: #{name}")

  params = Tools::Params::QueryOmnifocusParams.from_hash(
    entity: "tasks",
    filters: { project_name: name },
    fields: FIELDS
  )
  Tools::Operations::QueryOmnifocus.call(params).fold(
    on_ok: ->(match) { snake_case_keys(match.items || []) },
    on_error: ->(err) { { error: err } }
  )
end