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

    Keywords

    Install

    npm i @jcoreio/graphql-sequelize-extra

    DownloadsWeekly Downloads

    12

    Version

    2.0.0

    License

    MIT

    Unpacked Size

    452 kB

    Total Files

    33

    Last publish

    Collaborators

    • emily-stener
    • dsorensen
    • awinkler
    • mbrigdan
    • ngutzmann
    • jrmclaurin
    • jedwards1211
    • eladendorf
    • prudhvitella
    • brayden-arthur
    • rossjbartlett
    • anton.biryukov
    • etbci