From b335cb349371b41fb0aca257a2f3ec7c6af8cbfa Mon Sep 17 00:00:00 2001 From: David Erwin Date: Wed, 5 Apr 2017 17:26:12 -0400 Subject: [PATCH] Document subscription plugins --- PLUGINS.md | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/PLUGINS.md b/PLUGINS.md index e5cf8d760..f04695f66 100644 --- a/PLUGINS.md +++ b/PLUGINS.md @@ -92,6 +92,10 @@ type RootMutation { type RootQuery { people: [Person!] } + +type Subscription { + leader: Person +} ``` Thanks to [gql-merge](https://www.npmjs.com/package/gql-merge) the contents of @@ -206,6 +210,23 @@ If your post function accepts four parameters, then it can modify the field result. It is *required* that the function resolves a promise (or returns) with the modified value or simply the original if you didn't modify it. +#### Field: `setupFunctions` + +```js +setupFunctions: { + leader: (options, args) => ({ + leader: { + filter: (person) => person.place === 1 + }, + }), +} +``` + +Setup functions allow you to create filters that control which pubsub.publish() events +send data to the client. If the type in question contains args, clients may subscribe using those arguments to further filter their subscription. + +For more information, see the [Apollo Docs](https://github.com/apollographql/graphql-subscriptions). + #### Field: `router` ```js @@ -322,6 +343,10 @@ module.exports = { type RootQuery { people: [Person!] } + + type Subscription { + leader: Person + } `, context: { Slack: () => ({ @@ -377,6 +402,13 @@ module.exports = { } } } + }, + setupFunctions: { + leader: (options, args) => ({ + leader: { + filter: (person) => person.place === 1 + } + } } };