1.3.1 • Published 7 years ago

joi2gql v1.3.1

Weekly downloads
3
License
ISC
Repository
github
Last release
7 years ago

alt text

Build Status npm version

Easily convert Joi schemas into GraphQL data types.

Lead Mainter: Samuel Joli

Installation

npm install --save joi2gql

graphql-js is listed as a peer dependency. joi2gql does not install it's own instance of graphql and instead requires parent module to provide it. This avoids any version collisions.

Example

const Joi    = require('joi');
const Joi2GQL = require('joi2gql');

const joiSchema = Joi.object().keys({
    key1: Joi.string(),
    key2: Joi.number().integer(),
    key3: Joi.array().items(Joi.string()),
    key4: Joi.object().keys({
        subKey1: Joi.string(),
        subKey2: Joi.number()
    })
});

const GraphQLDataType = Joi2GQL.transmuteType(joiSchema);

Usage

const {
    Server
} = require('hapi');
const {
    graphqlHapi 
} = require('apollo-server-hapi');

const Joi    = require('joi');
const Joi2GQL = require('joi2gql');

const port   = '3000';
const host   = 'localhost';
const server = new Server();

server.connection({ port, host });

const songSchema = Joi.object().keys({
    artist: Joi.string(),
    title : Joi.string(),
    length: Joi.number().integer(),
});

const config = {
    name: 'Song',
    args: {
        id: Joi.number().integer()
    },
    resolve: (root, args) => {
        return {
            artist: 'Tycho',
            title : 'Awake',
            length: 4.43
        };
    }
};

const Song = Joi2GQL.transmuteType(songSchema, config);
const rootGQLSchema = {
    query: {
        song: Song
    }
};

server.register({
    register: graphqlHapi,
    options : {
        path          : '/graphql',
        graphqlOptions: {
            schema: Joi2GQL.transmuteSchema( rootGQLSchema )
        }
    }
});

server.start(() => {
    if (err) {
        throw new Error(err);
    }
    
    console.log(`Entering the matrix on port: ${server.info.port}`
});

API

See the detailed API reference.

Contributing

We love community and contributions! Please check out our guidelines before making any PRs.

Setting up for development

Install dependencies and run test.

npm install && npm test

GraphQL types not yet supported.

  • GraphQLInterfaceType
  • GraphQLUnionType
1.3.1

7 years ago

1.3.0

7 years ago

1.2.0

7 years ago

1.1.3

7 years ago