GraphQL
Beginner
1 min read
Schema Stitching and Modular SDL
Example
// npm install @graphql-tools/merge @graphql-tools/schema
import { mergeTypeDefs, mergeResolvers } from '@graphql-tools/merge';
import { makeExecutableSchema } from '@graphql-tools/schema';
// user.typedefs.js
export const userTypeDefs = `#graphql
type User { id: ID! name: String! email: String! }
type Query { users: [User!]! user(id: ID!): User }
type Mutation { createUser(name: String!, email: String!): User! }
`;
// product.typedefs.js
export const productTypeDefs = `#graphql
type Product { id: ID! title: String! price: Float! }
type Query { products: [Product!]! }
`;
// user.resolvers.js
export const userResolvers = {
Query: {
users: () => db.users.findAll(),
user: (_, { id }) => db.users.findById(id),
},
Mutation: {
createUser: (_, args) => db.users.create(args),
},
};
// product.resolvers.js
export const productResolvers = {
Query: { products: () => db.products.findAll() },
};
// schema.js — merge everything
const typeDefs = mergeTypeDefs([userTypeDefs, productTypeDefs]);
const resolvers = mergeResolvers([userResolvers, productResolvers]);
export const schema = makeExecutableSchema({ typeDefs, resolvers });
Related Resources
GraphQL Reference
Complete tag & property list
GraphQL How-To Guides
Step-by-step practical guides
GraphQL Exercises
Practice what you've learned
More in GraphQL