simpl-to-graphql-schema

2.0.0 • Public • Published

Simpl To GraphQL Schema

This is new updated and improved fork of # Simple Schema - GraphQL Schema Bridge except it doesn't build your resolvers.

Change only your Meteor Simple Schema: GraphQL schema are updated automatically.

Define your Simple Schemas for your collection and let simpl-to-graphql-schema do the tedious work of defining the schema's basic fields and resolvers, for you.

This tool works with Meteor Framework.

  • Installation

npm install --save simpl-to-graphql-schema

  • Your simple schema
import SimpleSchema from 'simpl-schema';
import { Mongo } from 'meteor/mongo';
 
// Define your collection
const Items = new Mongo.Collection('items');
 
//build your schema with SimpleSchema as usual
const Schemas = new SimpleSchema({
  _id: {
    type: String,
  },
  name: {
    type: String,
    label: "Item name",
  },
  ownerId: {
    type: String,
    label: "Owner identification",
  },
  createdAt: {
    type: String,
    label: "Item creation date",
  },
  updatedAt: {
    type: String,
    label: "Item last update",
  },
});
 
export default Schemas;
Items.attachSchema(Schemas);
  • Your GraphQL schema
import SimpleToGraphql from 'simpl-to-graphql';
import Schemas from './items';
 
const schemaGql = SimpleToGraphql.schema({ 
    // Your simple schema
    schema: Schemas, 
    // your grapqhl schema name
    name: 'Items', 
    // SimpleToGraphql options
    options: {
        // create schema only for those fields in an Array
        fields: ['name', 'ownerId', 'createdAt'],
        // insert scalars in an Array
        scalar: ['Date'],
        // create schema except for those fields in an Array
        except: ['updatedAt'],
        // change fields type
        custom: {
            createdAt: "Date",
            updatedAt: "Date"
        },
        // add fields to your generated schema
        additional: [
            'checked: Boolean'
            'usersList: [Users]'
    ],
        // console.log() your generated schema
        print: true, //default false
    }
});
export default schemaGql;
  • Your resolvers
//in case your want to use the built in Date scalar
import { DateScalar } from 'simpl-to-graphql';
// collections
import Items from '/imports/api/pages/pages'
 
export default {
    Query: {
      item: (root, args, { userId }) => Items.findOne({ ownerId: userId }),
      items: (root, args, { userId }) => Items.find({ ownerId: userId }).fetch(),
    },
    // you can put it here or in your merge of resolvers with DateScalar
    Date: DateScalar.Date
  };

Package Sidebar

Install

npm i simpl-to-graphql-schema

Weekly Downloads

0

Version

2.0.0

License

MIT

Unpacked Size

11.7 kB

Total Files

8

Last publish

Collaborators

  • nehtt