Vulcan/packages/vulcan-users/lib/modules/resolvers.js

69 lines
1.8 KiB
JavaScript
Raw Normal View History

import { addGraphQLResolvers, Connectors } from 'meteor/vulcan:lib';
2016-11-03 21:39:09 +09:00
const specificResolvers = {
2016-11-03 21:39:09 +09:00
Query: {
2018-02-18 15:26:59 +09:00
async currentUser(root, args, context) {
let user = null;
if (context && context.userId) {
user = await Connectors.get(context.Users, context.userId);
if (user.services) {
Object.keys(user.services).forEach((key) => {
user.services[key] = {}
});
}
}
return user;
},
},
};
2017-07-03 12:32:20 +09:00
addGraphQLResolvers(specificResolvers);
const resolvers = {
multi: {
2018-02-18 15:26:59 +09:00
async resolver(root, { terms = {} }, {currentUser, Users}, info) {
// get selector and options from terms and perform Mongo query
let {selector, options} = await Users.getParameters(terms);
options.limit = (terms.limit < 1 || terms.limit > 100) ? 100 : terms.limit;
options.skip = terms.offset;
const users = await Connectors.find(Users, selector, options);
// restrict documents fields
const restrictedUsers = Users.restrictViewableFields(currentUser, Users, users);
// prime the cache
restrictedUsers.forEach(user => Users.loader.prime(user._id, user));
return restrictedUsers;
2016-11-03 21:39:09 +09:00
},
},
single: {
2018-02-18 15:26:59 +09:00
async resolver(root, { documentId, slug }, {currentUser, Users}) {
// don't use Dataloader if user is selected by slug
const user = documentId ? await Users.loader.load(documentId) : (slug ? await Connectors.get(Users, {slug}): await Connectors.get(Users));
return Users.restrictViewableFields(currentUser, Users, user);
2016-11-03 21:39:09 +09:00
},
},
// total: {
// name: 'UsersTotal',
// async resolver(root, { terms = {} }, { Users }) {
// const {selector} = await Users.getParameters(terms);
// return await Connectors.count(Users, selector);
// },
// }
2016-11-03 21:39:09 +09:00
};
export default resolvers;