Skip to content

GraphQL combined schema with id-keyed top-level Query fields #356

@gilesknap

Description

@gilesknap

Parent

#351

What to build

The GraphQL transport synthesises one combined schema with N top-level Query fields, each keyed by its controller id. Clients query all configured devices from a single endpoint.

Scope:

  • GraphQL transport adopts the multi-controller connect() properly: one schema, one top-level Query field per id.
  • Per-transport GraphQL id validator runs at connect() time. GraphQL has the most restrictive identifier charset and so drives the lowest-common-denominator note in the docs (cross-transport id-naming guidance for users mixing EPICS hyphens with GraphQL field names).
  • End-to-end multi-controller GraphQL scenario added covering: two controllers exposed under a single combined schema with distinct id-keyed Query fields.
  • GraphQL transport test gains a per-transport id-validation case demonstrating the fail-fast behaviour.
  • Documentation note added about id charset constraints when mixing transports (lowest-common-denominator).

User stories from #351 covered: 16, 17, 18, 20.

Acceptance criteria

  • GraphQL endpoint exposes one combined schema with one top-level Query field per controller id
  • GraphQL id validator rejects illegal characters with a clear startup error
  • Multi-controller GraphQL scenario test passes
  • GraphQL transport test covers id-validation fail-fast
  • Lowest-common-denominator id-naming guidance added to docs
  • Full test suite stays green

Blocked by

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestpythonPull requests that update Python code

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions