Module: ElasticGraph::Apollo

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

Overview

ElasticGraph extension library that implements the [Apollo subgraph federation spec](www.apollographql.com/docs/federation/subgraph-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](www.apollographql.com/docs/federation/entities/#2-define-a-reference-resolver) 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