@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.

/@jcoreio/graphql-sequelize-extra/

    Package Sidebar

    Install

    npm i @jcoreio/graphql-sequelize-extra

    Weekly Downloads

    1

    Version

    2.0.0

    License

    MIT

    Unpacked Size

    452 kB

    Total Files

    33

    Last publish

    Collaborators

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