mirror of
https://github.com/wassname/talk.git
synced 2026-06-29 03:38:13 +08:00
44 lines
1021 B
JavaScript
44 lines
1021 B
JavaScript
const _ = require('lodash');
|
|
const debug = require('debug')('talk:graph:mutators');
|
|
|
|
const Comment = require('./comment');
|
|
const Action = require('./action');
|
|
const Tag = require('./tag');
|
|
const Token = require('./token');
|
|
const User = require('./user');
|
|
|
|
const plugins = require('../../services/plugins');
|
|
|
|
let mutators = [
|
|
|
|
// Load in the core mutators.
|
|
Comment,
|
|
Action,
|
|
Tag,
|
|
Token,
|
|
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(...mutators.map((mutators) => {
|
|
|
|
// Each set of mutators is a function which takes the context.
|
|
return mutators(context);
|
|
}));
|
|
};
|