Vulcan/packages/nova-voting/lib/graphql.js
2016-12-12 16:48:49 +09:00

29 lines
No EOL
853 B
JavaScript

import Telescope from 'meteor/nova:lib';
import Posts from 'meteor/nova:posts';
import { GraphQLSchema } from 'meteor/nova:core';
import { operateOnItem } from './vote.js';
const voteSchema = `
type Vote {
itemId: String
power: Float
votedAt: String
}
`;
GraphQLSchema.addSchema(voteSchema);
GraphQLSchema.addMutation('postsVote(documentId: String, voteType: String) : Post');
const voteResolver = {
Mutation: {
postsVote(root, {documentId, voteType}, context) {
Meteor._sleepForMs(2000); // wait 2 seconds for demonstration purpose
console.log("sleep done");
const post = Posts.findOne(documentId);
return context.Users.canDo(context.currentUser, `posts.${voteType}`) ? operateOnItem(context.Posts, post, context.currentUser, voteType) : false;
},
},
};
GraphQLSchema.addResolvers(voteResolver);