Skip to content

Instantly share code, notes, and snippets.

const { Binding } = require('graphql-binding')
const { makeExecutableSchema } = require('graphql-tools')
class HelloBinding extends Binding {
constructor() {
const typeDefs = `
type Query {
hello(name: String): String
}
const postServiceBinding = new RemoteBinding({
typeDefsPath: '../schemas/post-service.graphql',
endpoint: 'https://post-service-nyvvyjtbyt.now.sh',
})
const userServiceBinding = new RemoteBinding({
typeDefsPath: '../schemas/user-service.graphql',
endpoint: 'https://user-service-lvzqpqmeqb.now.sh/',
})
const server = new GraphQLServer({
const fs = require('fs')
const path = require('path')
const fetch = require('node-fetch')
const { Binding } = require('graphql-binding')
const { HttpLink } = require('apollo-link-http')
const { makeRemoteExecutableSchema } = require('graphql-tools')
class RemoteBinding extends Binding {
constructor({ typeDefsPath, endpoint }) {
const link = new HttpLink({ uri: endpoint, fetch })
type Query {
user(id: ID!): User
users: [User!]!
}
type Mutation {
createUser(name: String!): User!
updateUser(id: ID!, name: String!): User
deleteUser(id: ID!): User
}
const fs = require('fs')
const path = require('path')
const fetch = require('node-fetch')
const { Binding } = require('graphql-binding')
const { HttpLink } = require('apollo-link-http')
const { makeRemoteExecutableSchema } = require('graphql-tools')
const link = new HttpLink({ uri: 'https://post-service-nyvvyjtbyt.now.sh', fetch })
const typeDefs = fs.readFileSync(
path.join(__dirname, '../schemas/post-service.graphql'),
type Query {
posts(searchString: String): [Post!]!
}
type Mutation {
createDraft(title: String!, content: String!): Post
publish(id: ID!): Post
deletePost(id: ID!): Post
}
type Query {
posts: [Post!]!
post(id: ID!): Post
description: String!
}
type Mutation {
createPost(title: String!, content: String!, published: Boolean): Post!
updatePost(id: ID!, title: String, content: String, published: Boolean): Post
deletePost(id: ID!): Post
type Query {
posts: [Post!]!
post(id: ID!): Post
}
type Mutation {
createPost(title: String!, content: String!, published: Boolean): Post!
updatePost(id: ID!, title: String, content: String, published: Boolean): Post
deletePost(id: ID!): Post
}
const userBinding = require('graphql-binding-users')
const generateName = require('sillyname')
const resolvers = {
Query: {
user: async (parent, args, context, info) => {
const users = await userBinding.query.users({}, info)
return users.find(user => user.id === args.id)
},
},
type Query {
user(id: ID!): User
}
type Mutation {
createUserWithRandomName: User!
}