/apollo-fed-1-studio

Primary LanguageJavaScriptMIT LicenseMIT

Generate the supergraph

This graph is inspired from Mandy Wise's tutorial on federation, but using Apollo's managed capabilities.We have the following subgraphs:

- films
- people

Serve Gateway to Sandbox (not managed)

To generate the supergraph we need to get the local servers running, and then use rover supergraph command. Use this script: npm run start:subgraphs. You can kill it after generating the supergraph.

rover supergraph compose --config ./supergraph-config.yaml > supergraph.graphql

Now that we have a local copy of the supergraph, we can start the gateway with the subgraph services using this command concurrently: npm run dev

Managed Composition

In order to push these to with the rover cli, we need to extract the schemas out of the index files. Each subgraph will manage that separately.

Registering subgraphs

People

APOLLO_KEY=service:studio-managed:XXXXXXXXX \
  rover subgraph publish studio-managed@current \
  --routing-url http://localhost:4001/graphql \
  --schema ./schema.graphql \
  --name people

Films

APOLLO_KEY=service:studio-managed:XXXXXXXXX \
  rover subgraph publish studio-managed@current \
  --routing-url http://localhost:4002/graphql \
  --schema ./schema.graphql \
  --name films

Sample query from Studio:

query ExampleQuery {
  films {
    id
    title
    actors {
      name
    }
  }
}

## Response
{
  "data": {
    "films": [
      {
        "id": "1",
        "title": "Jaws",
        "actors": [
          {
            "name": "Richard Dreyfuss"
          }
        ]
      },
      {
        "id": "2",
        "title": "Close Encounters of the Third Kind",
        "actors": [
          {
            "name": "Richard Dreyfuss"
          }
        ]
      },
      {
        "id": "3",
        "title": "Raiders of the Lost Ark",
        "actors": [
          {
            "name": "Harrison Ford"
          }
        ]
      }
    ]
  }
}

See pipeline for bitbucket: https://www.apollographql.com/docs/rover/ci-cd/#bitbucket-pipelines

https://www.apollographql.com/docs/federation/enterprise-guide/change-management/