Skip to content

Commit

Permalink
Merge pull request #8469 from open-sausages/pulls/4/sense-and-extensi…
Browse files Browse the repository at this point in the history
…bility

DOCS: New nested fields, args for ApolloGraphQLManager
  • Loading branch information
robbieaverill authored Oct 17, 2018
2 parents 7ebcb7f + 3fcbead commit e407882
Showing 1 changed file with 55 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -1086,7 +1086,61 @@ const transformReadNotes = (manager) => {
export default transformReadNotes;
```

Simple! The transformation passes us a `ApolloGraphQLManager` instance that provides a fluent API for updating a query definition the same way the `FormStateManager` allows us to update Redux form state. In this case, our need is really straightforward. We'l just add a new field and be done with it.
Simple! The transformation passes us a `ApolloGraphQLManager` instance that provides a fluent API for updating a query definition the same way the `FormStateManager` allows us to update Redux form state.

#### Adding fields

In the above example, we added a single field to a query. Here's how that works:


```js
manager.addField(fieldName, fieldPath = 'root')
```

The `fieldPath` argument tells the manager at what level to add the field. In this case, since the `Priority` field is going on the root query (`readNotes`), we'll use `root` as the path. But suppose we had a more complex query like this:

```
query readMembers {
FirstName
Surname
Friends {
Email
Company {
Name
}
}
}
```

If we wanted to add a field to the nested `Company` query on `Friends`, we would use a path syntax.

```js
manager.addField('Tagline', 'root/Friends/Company');
```

#### Adding field arguments

Let's suppose we had the following query:

```
query ReadMembers($ImageSize: String!) {
readMembers {
FirstName
Avatar(Size: $ImageSize)
Company {
Name
}
}
}
```

Maybe the `Company` type has a `Logo`, and we want to apply the `ImageSize` parameter as an argument to that field.

```js
manager.addArg('Size', 'ImageSize', 'root/Company/Logo');
```

Where `root/Company/Logo` is the path to the field, `Size` is the name of the argument on that field, and `ImageSize` is the name of the variable.

#### Applying the transforms

Expand Down

0 comments on commit e407882

Please sign in to comment.