loopback-graphql-relay
Version:
Add Relay based Apollo Server or GraphQL queries on your Loopback server
49 lines (40 loc) • 1.02 kB
JavaScript
const _ = require('lodash');
const { GraphQLObjectType } = require('graphql');
const { getType } = require('../../types/type');
const getRemoteMethodQueries = require('./getRemoteMethodQueries');
const generateViewer = require('./viewer');
function generateModelFields(models) {
const modelFields = {};
_.forEach(models, (model) => {
const fields = Object.assign(
{},
getRemoteMethodQueries(model),
);
if (_.size(fields) === 0) {
return;
}
modelFields[model.modelName] = {
resolve: () => ({}),
type: new GraphQLObjectType({
name: `${model.modelName}Queries`,
description: model.modelName,
fields,
}),
};
});
return modelFields;
}
module.exports = function (models, options) {
const fields = Object.assign(
{},
{
node: getType('node'),
viewer: generateViewer(models, options),
},
generateModelFields(models),
);
return new GraphQLObjectType({
name: 'Query',
fields,
});
};