graphql-sequelize-helper
Version:
graphql-sequelize-helper transform Sequelize models to GraphQL schemas that is compatible with Relay. * <a href="http://docs.sequelizejs.com/">Sequelize</a> is a promise-based Node.js ORM for Postgres, MySQL, SQLite and Microsoft SQL Server. It features s
83 lines (65 loc) • 2.48 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _extends2 = require('babel-runtime/helpers/extends');
var _extends3 = _interopRequireDefault(_extends2);
var _lodash = require('lodash');
var _lodash2 = _interopRequireDefault(_lodash);
var _graphql = require('graphql');
var _utils = require('../utils');
var _type2 = require('../type');
var _type3 = _interopRequireDefault(_type2);
var _index = require('./index');
var _transformer = require('../transformer');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
exports.default = function (_ref) {
var model = _ref.model,
modelTypes = _ref.modelTypes,
schemaConfig = _ref.schemaConfig;
var tableName = _utils.utils.getTableName(model);
var modelType = modelTypes[tableName];
var modelConfig = _utils.utils.getModelGrapqhQLConfig(model);
var result = {};
var graphqlObj = void 0;
var nameResolver = _utils.utils.getQueryName;
var descriptionResolver = _utils.utils.getQueryDescription;
// query all
var findFields = _index.attributesToFindOptions.toWhereFields(model);
if (modelConfig.crud.read.all) {
var connectionName = _utils.utils.connectionName(model);
var connection = modelTypes[connectionName];
graphqlObj = modelConfig.crud.read.all({
name: nameResolver(model, 'read', 'all'),
description: descriptionResolver(model, 'read', 'all'),
type: connection.connectionType,
args: _lodash2.default.assign({}, (0, _extends3.default)({}, connection.connectionArgs, {
condition: findFields,
groupBy: {
type: new _graphql.GraphQLList(_graphql.GraphQLString)
}
})),
resolve: connection.resolve
});
result[graphqlObj.name] = graphqlObj;
}
// query one
if (modelConfig.crud.read.one) {
graphqlObj = modelConfig.crud.read.one({
name: nameResolver(model, 'read', 'one'),
description: descriptionResolver(model, 'read', 'one'),
type: modelType,
args: {
id: { type: _type3.default.GraphQLScalarTypes.globalIdInputType(model.name) }
},
resolve: schemaConfig.resolver(model)
});
result[graphqlObj.name] = graphqlObj;
}
// 自定义查询
var queries = _lodash2.default.get(modelConfig, 'queries', null);
if (queries) {
_lodash2.default.assign(result, (0, _transformer.toGraphqlType)({ obj: queries, modelTypes: modelTypes }));
}
return result;
};