2021-08-10 11:38:52 +02:00
|
|
|
'use strict';
|
|
|
|
|
2021-08-10 17:28:53 +02:00
|
|
|
// const _ = require('lodash');
|
|
|
|
// const loadConfigs = require('./load-config');
|
|
|
|
//
|
|
|
|
// const attachMetadataToResolvers = (schema, { api, plugin }) => {
|
|
|
|
// const { resolver = {} } = schema;
|
|
|
|
// if (_.isEmpty(resolver)) return schema;
|
|
|
|
//
|
|
|
|
// Object.keys(resolver).forEach(type => {
|
|
|
|
// if (!_.isPlainObject(resolver[type])) return;
|
|
|
|
//
|
|
|
|
// Object.keys(resolver[type]).forEach(resolverName => {
|
|
|
|
// if (!_.isPlainObject(resolver[type][resolverName])) return;
|
|
|
|
//
|
|
|
|
// resolver[type][resolverName]['_metadatas'] = {
|
|
|
|
// api,
|
|
|
|
// plugin,
|
|
|
|
// };
|
|
|
|
// });
|
|
|
|
// });
|
|
|
|
//
|
|
|
|
// return schema;
|
|
|
|
// };
|
|
|
|
|
|
|
|
// todo[v4]: Rework how we load additional gql schema / customize current schema
|
|
|
|
module.exports = async (/*{ strapi }*/) => {
|
|
|
|
// const { appPath, installedPlugins } = strapi.config;
|
|
|
|
//
|
|
|
|
// // Load core utils.
|
|
|
|
//
|
|
|
|
// const { api, plugins, extensions } = await loadConfigs({
|
|
|
|
// appPath,
|
|
|
|
// installedPlugins,
|
|
|
|
// });
|
|
|
|
//
|
|
|
|
// _.merge(strapi, { api, plugins });
|
|
|
|
//
|
|
|
|
// // Create a merge of all the GraphQL configuration.
|
|
|
|
// const apisSchemas = Object.keys(strapi.api || {}).map(key => {
|
|
|
|
// const schema = _.get(strapi.api[key], 'config.schema.graphql', {});
|
|
|
|
// return attachMetadataToResolvers(schema, { api: key });
|
|
|
|
// });
|
|
|
|
//
|
|
|
|
// const pluginsSchemas = Object.keys(strapi.plugins || {}).map(key => {
|
|
|
|
// const schema = _.get(strapi.plugins[key], 'config.schema.graphql', {});
|
|
|
|
// return attachMetadataToResolvers(schema, { plugin: key });
|
|
|
|
// });
|
|
|
|
//
|
|
|
|
// const extensionsSchemas = Object.keys(extensions || {}).map(key => {
|
|
|
|
// const schema = _.get(extensions[key], 'config.schema.graphql', {});
|
|
|
|
// return attachMetadataToResolvers(schema, { plugin: key });
|
|
|
|
// });
|
|
|
|
//
|
|
|
|
// const baseSchema = mergeSchemas([...pluginsSchemas, ...extensionsSchemas, ...apisSchemas]);
|
|
|
|
//
|
|
|
|
// // save the final schema in the plugin's config
|
|
|
|
// _.set(strapi.plugins.graphql, 'config._schema.graphql', baseSchema);
|
2021-08-10 11:38:52 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Merges a list of schemas
|
|
|
|
* @param {Array<Object>} schemas - The list of schemas to merge
|
|
|
|
*/
|
2021-08-10 17:28:53 +02:00
|
|
|
// const mergeSchemas = schemas => {
|
|
|
|
// return schemas.reduce((acc, el) => {
|
|
|
|
// const { definition, query, mutation, type, resolver } = el;
|
|
|
|
//
|
|
|
|
// return _.merge(acc, {
|
|
|
|
// definition: `${acc.definition || ''} ${definition || ''}`,
|
|
|
|
// query: `${acc.query || ''} ${query || ''}`,
|
|
|
|
// mutation: `${acc.mutation || ''} ${mutation || ''}`,
|
|
|
|
// type,
|
|
|
|
// resolver,
|
|
|
|
// });
|
|
|
|
// }, {});
|
|
|
|
// };
|