2018-03-27 17:15:28 +02:00
|
|
|
|
'use strict';
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Module dependencies
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
// Public node modules.
|
|
|
|
|
const { graphqlKoa, graphiqlKoa } = require('apollo-server-koa');
|
|
|
|
|
|
|
|
|
|
module.exports = strapi => {
|
|
|
|
|
return {
|
|
|
|
|
beforeInitialize: function() {
|
|
|
|
|
// Try to inject this middleware just after the parser to skip the router processing.
|
|
|
|
|
const index = strapi.config.middleware.load.after.indexOf('parser');
|
|
|
|
|
|
|
|
|
|
if (index !== -1) {
|
|
|
|
|
strapi.config.middleware.load.after.splice(index + 1, 0, 'graphql');
|
|
|
|
|
} else {
|
|
|
|
|
strapi.config.middleware.load.after.push('graphql');
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
initialize: function(cb) {
|
|
|
|
|
const router = strapi.koaMiddlewares.routerJoi();
|
2018-03-27 19:02:04 +02:00
|
|
|
|
const schema = strapi.plugins.graphql.services.graphql.generateSchema();
|
2018-03-27 17:15:28 +02:00
|
|
|
|
|
2018-03-27 19:02:04 +02:00
|
|
|
|
router.post(strapi.plugins.graphql.config.endpoint, graphqlKoa({ schema }));
|
|
|
|
|
router.get(strapi.plugins.graphql.config.endpoint, graphqlKoa({ schema }));
|
2018-03-27 17:15:28 +02:00
|
|
|
|
|
2018-03-27 19:02:04 +02:00
|
|
|
|
router.get('/graphiql', graphiqlKoa({ endpointURL: strapi.plugins.graphql.config.endpoint }));
|
2018-03-27 17:15:28 +02:00
|
|
|
|
|
|
|
|
|
strapi.app.use(router.middleware());
|
|
|
|
|
|
|
|
|
|
cb();
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
};
|