@panter/simpl-to-graphql-schema
v1.0.5
Published
simpl schema to graphql schema converter
Downloads
4
Readme
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
};