Module: ElasticGraph::Apollo

Defined in:
elasticgraph-apollo/lib/elastic_graph/apollo/schema_definition/api_extension.rb,
elasticgraph-apollo/lib/elastic_graph/apollo/graphql/engine_extension.rb,
elasticgraph-apollo/lib/elastic_graph/apollo/graphql/service_field_resolver.rb,
elasticgraph-apollo/lib/elastic_graph/apollo/graphql/entities_field_resolver.rb,
elasticgraph-apollo/lib/elastic_graph/apollo/graphql/http_endpoint_extension.rb,
elasticgraph-apollo/lib/elastic_graph/apollo/schema_definition/field_extension.rb,
elasticgraph-apollo/lib/elastic_graph/apollo/schema_definition/state_extension.rb,
elasticgraph-apollo/lib/elastic_graph/apollo/schema_definition/apollo_directives.rb,
elasticgraph-apollo/lib/elastic_graph/apollo/schema_definition/factory_extension.rb,
elasticgraph-apollo/lib/elastic_graph/apollo/schema_definition/argument_extension.rb,
elasticgraph-apollo/lib/elastic_graph/apollo/schema_definition/enum_type_extension.rb,
elasticgraph-apollo/lib/elastic_graph/apollo/schema_definition/enum_value_extension.rb,
elasticgraph-apollo/lib/elastic_graph/apollo/schema_definition/input_type_extension.rb,
elasticgraph-apollo/lib/elastic_graph/apollo/schema_definition/union_type_extension.rb,
elasticgraph-apollo/lib/elastic_graph/apollo/schema_definition/entity_type_extension.rb,
elasticgraph-apollo/lib/elastic_graph/apollo/schema_definition/object_type_extension.rb,
elasticgraph-apollo/lib/elastic_graph/apollo/schema_definition/scalar_type_extension.rb,
elasticgraph-apollo/lib/elastic_graph/apollo/schema_definition/interface_type_extension.rb,
elasticgraph-apollo/lib/elastic_graph/apollo/schema_definition/graphql_sdl_enumerator_extension.rb

Overview

ElasticGraph extension library that implements the Apollo subgraph federation spec, turning any ElasticGraph instance into an Apollo subgraph.

ElasticGraph::Apollo has two parts:

  • SchemaDefinition is an extension used while defining an ElasticGraph schema. It includes all schema elements that are part of the Apollo spec, including _Entity and the various directives.
  • GraphQL is an extension used by elasticgraph-graphql to support queries against Apollo’s subgraph schema additions (e.g. _service and _entities). It includes reference resolvers for all indexed types in your schema.

To use elasticgraph-apollo, simply use SchemaDefinition::APIExtension as a schema definition extension module. The GraphQL extension module will get used by elasticgraph-graphql automatically.

Examples:

Use elasticgraph-apollo in a project

require "elastic_graph/apollo/schema_definition/api_extension"

ElasticGraph::Local::RakeTasks.new(
  local_config_yaml: "config/settings/local.yaml",
  path_to_schema: "config/schema.rb"
) do |tasks|
  tasks.schema_definition_extension_modules = [ElasticGraph::Apollo::SchemaDefinition::APIExtension]
end

Defined Under Namespace

Modules: GraphQL, SchemaDefinition