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
102 lines (80 loc) • 3.07 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _extends2 = require('babel-runtime/helpers/extends');
var _extends3 = _interopRequireDefault(_extends2);
var _defaults = require('defaults');
var _defaults2 = _interopRequireDefault(_defaults);
var _graphql = require('graphql');
var _graphqlSequelize = require('graphql-sequelize');
var _lodash = require('lodash');
var _lodash2 = _interopRequireDefault(_lodash);
var _graphql2 = require('./graphql');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var sequelizeConnection = _graphqlSequelize.relay.sequelizeConnection;
exports.default = function (sequelize, schemaConfig) {
schemaConfig = (0, _defaults2.default)(schemaConfig, {
models: function models(model) {
return model;
},
mutations: function mutations() {},
queries: function queries() {},
subscriptions: function subscriptions() {},
schema: function schema(_schema) {
return _schema;
},
resolver: _graphqlSequelize.resolver,
sequelizeConnection: sequelizeConnection
});
var models = sequelize.models;
var modelTypes = schemaConfig.models((0, _graphql2.getModelTypes)({ models: models, schemaConfig: schemaConfig }));
var queries = {};
var mutations = {};
var subscriptions = {};
for (var modelName in models) {
var model = models[modelName];
var modelQueryAndMutation = (0, _graphql2.graphqlModel)({ model: model, modelTypes: modelTypes, schemaConfig: schemaConfig });
for (var queryName in modelQueryAndMutation.queries) {
queries[queryName] = modelQueryAndMutation.queries[queryName];
}
for (var mutationName in modelQueryAndMutation.mutations) {
mutations[mutationName] = modelQueryAndMutation.mutations[mutationName];
}
for (var subscriptionName in modelQueryAndMutation.subscriptions) {
subscriptions[subscriptionName] = modelQueryAndMutation.subscriptions[subscriptionName];
}
}
var schema = {};
if (!_lodash2.default.isEmpty(queries)) {
var queryRoot = new _graphql.GraphQLObjectType({
name: 'Query',
description: 'Root query of the Schema',
fields: function fields() {
return (0, _extends3.default)({}, queries);
}
});
schema.query = queryRoot;
}
if (!_lodash2.default.isEmpty(mutations)) {
var mutationRoot = new _graphql.GraphQLObjectType({
name: 'Mutation',
description: 'Root mutation of the Schema',
fields: function fields() {
return (0, _extends3.default)({}, mutations);
}
});
schema.mutation = mutationRoot;
}
if (!_lodash2.default.isEmpty(subscriptions)) {
var subscriptionRoot = new _graphql.GraphQLObjectType({
name: 'Subscription',
description: 'Root subscription of the Schema',
fields: function fields() {
return (0, _extends3.default)({}, subscriptions);
}
});
schema.subscription = subscriptionRoot;
}
return new _graphql.GraphQLSchema(schemaConfig.schema(schema));
};