@panter/simpl-to-graphql-schema

1.0.5 • 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
  };

Dependents (0)

Package Sidebar

Install

npm i @panter/simpl-to-graphql-schema

Weekly Downloads

0

Version

1.0.5

License

MIT

Unpacked Size

18.9 kB

Total Files

9

Last publish

Collaborators

  • dejvczernin
  • voytech
  • macrozone
  • claudiocro
  • blurri