Initial implementation at plugins

This commit is contained in:
gaba
2017-03-20 07:36:06 -07:00
parent 2ee6335328
commit 258fd8b25a
11 changed files with 334 additions and 23 deletions
+25 -5
View File
@@ -1,17 +1,37 @@
const _ = require('lodash');
const debug = require('debug')('talk:graph:mutators');
const Comment = require('./comment');
const Action = require('./action');
const User = require('./user');
const plugins = require('../../plugins');
let mutators = [
// Load in the core mutators.
Comment,
Action,
User,
// Load the plugin mutators from the manager.
...plugins
.get('server', 'mutators').map(({plugin, mutators}) => {
debug(`added plugin '${plugin.name}'`);
return mutators;
})
];
/**
* Creates a set of mutators based on a GraphQL context.
* @param {Object} context the context of the GraphQL request
* @return {Object} object of mutators
*/
module.exports = (context) => {
// We need to return an object to be accessed.
return _.merge(...[
Comment,
Action,
User,
].map((mutators) => {
return _.merge(...mutators.map((mutators) => {
// Each set of mutators is a function which takes the context.
return mutators(context);