1.0.14 • Published 7 years ago

graphql-tools-builder v1.0.14

Weekly downloads
4
License
MIT
Repository
github
Last release
7 years ago

Travis codecov


graphql-tools-builder

Create Graphql schema effortlessly

This library like a plugin for graphql-tools to organize your modules easier.

Graphl-tools style

const typeDefs = `
scalar Date

type User {
  _id: String
  username: String
  password: String
  createdAt: Date
  modifiedAt: Date
  createdBy: String
  modifiedBy: String
  creator: User
  modifier: User
}

input CreateUserForm {
  username: String!
  password: String!
}

type Query {
	#get all users
  getUsers: [User]
}

type Mutation {
  #Create new user
  createUser(data: CreateUserForm!): User
}
`;

const resolvers = {
  User: {
    creator(root, args, context) {
      if(root.createdBy) {
        return context.User.findOne({_id: root.createdBy});
      }
      return null;
    },
    modifier(root, args, context) {
      if(root.modifiedBy) {
        return context.User.findOne({_id: root.modifiedBy});
      }
      return null;
    }
  },
  Query: {
    getUsers(root, args, context) {
      return context.User.find({});
    }
  },
  Mutation: {
    createUser(root, args, context) {
      return context.User.insert(args.data);
    }
  }
}

import { makeExecutableSchema } from 'graphql-tools';

// Generarte main schema
const schema = makeExecutableSchema({
  typeDefs,
  resolvers
});

Graphl-tools-builder style

import { makeExecutableSchema } from 'graphql-tools';
import { Schema, Module } from 'graphql-tools-builder';
const GraphqlDate = require('graphql-date);

const schema = new Schema();
const commons = new Module('Commons');
const user = new Module('User');
schema.addModule(commons);
schema.addModule(user);

// set up commons type
commons.createScalar('Date').resolver(GraphqlDate);
// set up user module
user.createType('User')
  .field('_id', 'String')
  .field('username', 'String')
  .field('password', 'String')
  .field('createdAt', 'Date')
  .field('modifiedAt', 'Date')
  .field('createdBy', 'String')
  .field('modifiedBy', 'String')
  .field('creator', 'User')
  .field('modifier', 'User')
  .resolver({
    creator(root, args, context) {
      if(root.createdBy) {
        return context.User.findOne({_id: root.createdBy});
      }
      return null;
    },
    modifier(root, args, context) {
      if(root.modifiedBy) {
        return context.User.findOne({_id: root.modifiedBy});
      }
      return null;
    }
  });

user.createInput('CreateUserForm')
  .field('username', 'String', true)
  .field('password', 'String', true);

user.createQuery('getUsers')
  .output('[User]')
  .resolver((root, args, context) => {
    return context.User.find({});
  });

user.createMutation('createUser')
  .param('data', 'CreateUserForm', true)
  .output('User')
  .resolver((root, args, context) => ({
    return context.User.insert(args.data);
  }));

// Generarte main schema
const graphqlSchema = makeExecutableSchema({
  typeDefs: schema.getTypeDefs(),
  resolvers: schema.getResolvers()
});
1.0.14

7 years ago

1.0.13

7 years ago

1.0.12

7 years ago

1.0.11

7 years ago

1.0.10

7 years ago

1.0.9

7 years ago

1.0.8

7 years ago

1.0.7

7 years ago

1.0.6

7 years ago

1.0.5

7 years ago

1.0.4

7 years ago

1.0.3

7 years ago

1.0.2

7 years ago

1.0.1

7 years ago

1.0.0

7 years ago