1 import GraphQLJSON from 'graphql-type-json'
2 import shortid from 'shortid'
9 countStr: counter => `Current count: ${counter.count}`,
14 hello: (root, { name }) => `Hello ${name || 'World'}!`,
15 messages: (root, args, { db }) => db.get('messages').value(),
16 uploads: (root, args, { db }) => db.get('uploads').value(),
21 myMutation: (root, args, context) => {
22 const message = 'My mutation completed!'
23 context.pubsub.publish('hey', { mySub: message })
26 addMessage: (root, { input }, { pubsub, db }) => {
28 id: shortid.generate(),
38 pubsub.publish('messages', { messageAdded: message })
43 singleUpload: (root, { file }, { processUpload }) => processUpload(file),
44 multipleUpload: (root, { files }, { processUpload }) => Promise.all(files.map(processUpload)),
50 subscribe: (parent, args, { pubsub }) => pubsub.asyncIterator('hey'),
53 subscribe: (parent, args, { pubsub }) => {
54 const channel = Math.random().toString(36).substring(2, 15) // random channel name
56 setInterval(() => pubsub.publish(
59 // eslint-disable-next-line no-plusplus
60 counter: { count: count++ },
63 return pubsub.asyncIterator(channel)
68 subscribe: (parent, args, { pubsub }) => pubsub.asyncIterator('messages'),