@jcoreio/graphql-sequelize-extra

2.0.0 • Public • Published

@jcoreio/graphql-sequelize-extra

CircleCI Coverage Status semantic-release Commitizen friendly npm version

some missing pieces of the graphql-sequelize bridge

Installation

npm install --save @jcoreio/graphql-sequelize-extra

API

associationFields(model, options)

const { associationFields } = require('@jcoreio/graphql-sequelize-extra')

Creates GraphQL fields for the given sequelize model's associations.

Arguments

model: Class<Sequelize.Model<any>>

options: Object

options.getType: (model: Class<Sequelize.Model<any>>) => Object (required)

Gets the GraphQL type for the given sequelize model.

options.getArgs: (model: Class<Sequelize.Model<any>>) => Object (optional)

Gets the GraphQL args for the given sequelize model.

options.getResolver: (model: Class<Sequelize.Model<any>>, association: Sequelize.Association) => Function (optional)

Gets the GraphQL resolve function for the given sequelize model and association.

Returns

A plain object of GraphQL fields for the given model's associations.

Advice

You should use associationFields within a fields thunk since it some types it needs would fail to be defined if there are circular associations:

const { models } = sequelize

function getType(model) {
  return types[model.name]
}

const types = mapValues(
  models,
  (model) =>
    new graphql.GraphQLObjectType({
      name: model.name,
      fields: () => ({
        ...attributeFields(model),
        ...associationFields(model, { getType }),
      }),
    })
)

If you have circular associations, you should use some form of nested GraphQL query attack prevention.

Readme

Keywords

Package Sidebar

Install

npm i @jcoreio/graphql-sequelize-extra

Weekly Downloads

0

Version

2.0.0

License

MIT

Unpacked Size

452 kB

Total Files

33

Last publish

Collaborators

  • gravitate1838
  • manojrsingireddy
  • avramdodson
  • forrest-keller
  • jrmclaurin
  • jedwards1211
  • eladendorf