Files
apollo/tests/ssr/apollo-server/resolvers.js
T
Guillaume Chau 6afceecd32 test(e2e): SSR
2019-10-21 12:15:25 +02:00

71 lines
1.7 KiB
JavaScript

import GraphQLJSON from 'graphql-type-json'
import shortid from 'shortid'
export default {
JSON: GraphQLJSON,
Counter: {
countStr: counter => `Current count: ${counter.count}`
},
Query: {
hello: (root, { name }) => `Hello ${name || 'World'}!`,
messages: (root, args, { db }) => db.get('messages').value(),
uploads: (root, args, { db }) => db.get('uploads').value()
},
Mutation: {
myMutation: (root, args, context) => {
const message = 'My mutation completed!'
context.pubsub.publish('hey', { mySub: message })
return message
},
addMessage: (root, { input }, { pubsub, db }) => {
const message = {
id: shortid.generate(),
text: input.text
}
db
.get('messages')
.push(message)
.last()
.write()
pubsub.publish('messages', { messageAdded: message })
return message
},
singleUpload: (root, { file }, { processUpload }) => processUpload(file),
multipleUpload: (root, { files }, { processUpload }) => Promise.all(files.map(processUpload))
},
Subscription: {
mySub: {
subscribe: (parent, args, { pubsub }) => pubsub.asyncIterator('hey')
},
counter: {
subscribe: (parent, args, { pubsub }) => {
const channel = Math.random().toString(36).substring(2, 15) // random channel name
let count = 0
setInterval(() => pubsub.publish(
channel,
{
// eslint-disable-next-line no-plusplus
counter: { count: count++ }
}
), 2000)
return pubsub.asyncIterator(channel)
}
},
messageAdded: {
subscribe: (parent, args, { pubsub }) => pubsub.asyncIterator('messages')
}
}
}