From dbd106d523c9d6ef9e32102a5cc1292ec96a0cc3 Mon Sep 17 00:00:00 2001 From: Wyatt Johnson Date: Mon, 18 Dec 2017 16:24:28 -0700 Subject: [PATCH] added support for plugging into schema level resolve --- graph/connectors.js | 10 +++++++++- graph/schema.js | 13 ++++++++++++- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/graph/connectors.js b/graph/connectors.js index cc7e45d21..c71942bc4 100644 --- a/graph/connectors.js +++ b/graph/connectors.js @@ -1,3 +1,6 @@ +const debug = require('debug')('talk:graph:connectors'); +const merge = require('lodash/merge'); + // Errors. const errors = require('../errors'); @@ -76,4 +79,9 @@ const connectors = { }, }; -module.exports = connectors; +module.exports = Plugins.get('server', 'connectors').reduce((defaultConnectors, {plugin, connectors: pluginConnectors}) => { + debug(`adding plugin '${plugin.name}'`); + + // Merge in the plugin connectors. + return merge(defaultConnectors, pluginConnectors); +}, connectors); diff --git a/graph/schema.js b/graph/schema.js index d4cd9f890..d9df096a4 100644 --- a/graph/schema.js +++ b/graph/schema.js @@ -1,4 +1,8 @@ -const {makeExecutableSchema} = require('graphql-tools'); +const { + makeExecutableSchema, + addSchemaLevelResolveFunction, +} = require('graphql-tools'); +const debug = require('debug')('talk:graph:schema'); const {decorateWithHooks} = require('./hooks'); const {decorateWithErrorHandler} = require('./errorHandler'); @@ -14,4 +18,11 @@ decorateWithHooks(schema, plugins.get('server', 'hooks')); // Handle errors like masking in production and mutation errors. decorateWithErrorHandler(schema); +// For each schemaLevelResolveFunction, add it to the schema. +plugins.get('server', 'schemaLevelResolveFunction').forEach(({plugin, schemaLevelResolveFunction}) => { + debug(`added schemaLevelResolveFunction from plugin '${plugin.name}'`); + + addSchemaLevelResolveFunction(schema, schemaLevelResolveFunction); +}); + module.exports = schema;