UNPKG

graphql-compose-relay

Version:

Plugin for `graphql-compose` which wraps graphql types with Relay specific logic.

177 lines (160 loc) 4.05 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.manyArgsWithoutInputResolver = exports.manyArgsWithInputResolver = exports.createOneResolver = exports.findByIdResolver = exports.userTC = exports.UserType = void 0; var _graphqlCompose = require("graphql-compose"); var _graphql = require("graphql-compose/lib/graphql"); const UserType = new _graphql.GraphQLObjectType({ name: 'User', fields: { id: { type: _graphql.GraphQLInt }, name: { type: _graphql.GraphQLString }, nickname: { type: _graphql.GraphQLString } } }); exports.UserType = UserType; const userTC = _graphqlCompose.schemaComposer.createObjectTC(UserType); exports.userTC = userTC; userTC.setRecordIdFn(obj => obj.id); const findByIdResolver = _graphqlCompose.schemaComposer.createResolver({ name: 'findById', kind: 'query', type: UserType, args: { _id: { name: '_id', type: new _graphql.GraphQLNonNull(_graphql.GraphQLInt) } }, resolve: resolveParams => { const args = resolveParams.args || {}; if (args._id.toString() === '1') { return Promise.resolve({ id: 1, name: 'Pavel', nickname: '@nodkz' }); } if (args._id.toString() === '2') { return Promise.resolve({ id: 2, name: 'Lee', nickname: '@leeb' }); } return Promise.resolve(null); } }); exports.findByIdResolver = findByIdResolver; userTC.setResolver('findById', findByIdResolver); const createOneResolver = _graphqlCompose.schemaComposer.createResolver({ name: 'createOne', kind: 'mutation', type: new _graphql.GraphQLObjectType({ name: 'UserPayload', fields: { record: { type: UserType } } }), args: { input: { name: 'input', type: new _graphql.GraphQLInputObjectType({ name: 'UserInput', fields: { name: { type: _graphql.GraphQLString } } }) } }, resolve: resolveParams => { return Promise.resolve({ recordId: resolveParams.args.input.id, record: resolveParams.args && resolveParams.args.input || {} }); } }); exports.createOneResolver = createOneResolver; userTC.setResolver('createOne', createOneResolver); const manyArgsWithInputResolver = _graphqlCompose.schemaComposer.createResolver({ name: 'manyArgsWithInput', kind: 'mutation', type: new _graphql.GraphQLObjectType({ name: 'UserPayload', fields: { record: { type: UserType } } }), args: { input: { name: 'input', type: new _graphql.GraphQLInputObjectType({ name: 'UserInput', fields: { name: { type: _graphql.GraphQLString } } }) }, sort: { name: 'sort', type: _graphql.GraphQLString }, limit: { name: 'limit', type: _graphql.GraphQLInt } }, resolve: resolveParams => { return Promise.resolve({ recordId: resolveParams.args.input.id, record: resolveParams.args && resolveParams.args.input || {} }); } }); exports.manyArgsWithInputResolver = manyArgsWithInputResolver; userTC.setResolver('manyArgsWithInput', manyArgsWithInputResolver); const manyArgsWithoutInputResolver = _graphqlCompose.schemaComposer.createResolver({ name: 'manyArgsWithoutInput', kind: 'mutation', type: new _graphql.GraphQLObjectType({ name: 'UserPayload', fields: { record: { type: UserType } } }), args: { sort: { name: 'sort', type: _graphql.GraphQLString }, limit: { name: 'limit', type: _graphql.GraphQLInt } }, resolve: resolveParams => { return Promise.resolve({ recordId: resolveParams.args.input.id, record: resolveParams.args && resolveParams.args.input || {} }); } }); exports.manyArgsWithoutInputResolver = manyArgsWithoutInputResolver; userTC.setResolver('manyArgsWithoutInput', manyArgsWithoutInputResolver);