@coko/server
Version:
Reusable server for use by Coko's projects
270 lines • 9.36 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const graphql_subscriptions_1 = require("graphql-subscriptions");
const logger_1 = __importDefault(require("../../logger"));
const pubsub_1 = __importDefault(require("../../graphql/pubsub"));
const constants_1 = require("./constants");
const user_controller_1 = require("./user.controller");
const identity_controller_1 = require("../identity/identity.controller");
const { USER_RESOLVER } = constants_1.labels;
const { USER_UPDATED } = constants_1.subscriptions;
const userResolver = async (_, { id }) => {
try {
logger_1.default.info(`${USER_RESOLVER} user`);
return (0, user_controller_1.getUser)(id);
}
catch (e) {
logger_1.default.error(`${USER_RESOLVER} user: ${e.message}`);
throw e;
}
};
const usersResolver = async (_, { filter, pagination }) => {
try {
logger_1.default.info(`${USER_RESOLVER} users`);
return (0, user_controller_1.getUsers)(filter, pagination);
}
catch (e) {
logger_1.default.error(`${USER_RESOLVER} users: ${e.message}`);
throw e;
}
};
const currentUserResolver = async (_, __, ctx) => {
try {
logger_1.default.info(`${USER_RESOLVER} currentUser`);
if (!ctx.userId)
return null;
return (0, user_controller_1.getUser)(ctx.userId);
}
catch (e) {
logger_1.default.error(`${USER_RESOLVER} currentUser: ${e.message}`);
throw e;
}
};
const activateUserResolver = async (_, { id }) => {
try {
logger_1.default.info(`${USER_RESOLVER} activateUser`);
return (0, user_controller_1.activateUser)(id);
}
catch (e) {
logger_1.default.error(`${USER_RESOLVER} activateUser: ${e.message}`);
throw e;
}
};
const activateUsersResolver = async (_, { ids }) => {
try {
logger_1.default.info(`${USER_RESOLVER} activateUsers`);
return (0, user_controller_1.activateUsers)(ids);
}
catch (e) {
logger_1.default.error(`${USER_RESOLVER} activateUsers: ${e.message}`);
throw e;
}
};
const deleteUserResolver = async (_, { id }) => {
try {
logger_1.default.info(`${USER_RESOLVER} deleteUser`);
return (0, user_controller_1.deleteUser)(id);
}
catch (e) {
logger_1.default.error(`${USER_RESOLVER} deleteUser: ${e.message}`);
throw e;
}
};
const deleteUsersResolver = async (_, { ids }) => {
try {
logger_1.default.info(`${USER_RESOLVER} deleteUsers`);
return (0, user_controller_1.deleteUsers)(ids);
}
catch (e) {
logger_1.default.error(`${USER_RESOLVER} deleteUsers: ${e.message}`);
throw e;
}
};
const deactivateUserResolver = async (_, { id }) => {
try {
logger_1.default.info(`${USER_RESOLVER} deactivateUser`);
return (0, user_controller_1.deactivateUser)(id);
}
catch (e) {
logger_1.default.error(`${USER_RESOLVER} deactivateUser: ${e.message}`);
throw e;
}
};
const deactivateUsersResolver = async (_, { ids }) => {
try {
logger_1.default.info(`${USER_RESOLVER} deactivateUsers`);
return (0, user_controller_1.deactivateUsers)(ids);
}
catch (e) {
logger_1.default.error(`${USER_RESOLVER} deactivateUsers: ${e.message}`);
throw e;
}
};
const updateUserResolver = async (_, { id, input }) => {
try {
logger_1.default.info(`${USER_RESOLVER} updateUser`);
const updatedUser = await (0, user_controller_1.updateUser)(id, input);
pubsub_1.default.publish(USER_UPDATED, {
userUpdated: updatedUser,
});
return updatedUser;
}
catch (e) {
logger_1.default.error(`${USER_RESOLVER} updateUser: ${e.message}`);
throw e;
}
};
const loginResolver = async (_, { input }) => {
try {
logger_1.default.info(`${USER_RESOLVER} login`);
return (0, user_controller_1.login)(input);
}
catch (e) {
logger_1.default.error(`${USER_RESOLVER} login: ${e.message}`);
throw e;
}
};
const signUpResolver = async (_, { input }) => {
try {
logger_1.default.info(`${USER_RESOLVER} signUp`);
return (0, user_controller_1.signUp)(input);
}
catch (e) {
logger_1.default.error(`${USER_RESOLVER} signUp: ${e.message}`);
throw e;
}
};
const setDefaultIdentityResolver = async (_, { userId, identityId }) => {
try {
logger_1.default.info(`${USER_RESOLVER} setDefaultIdentity`);
return (0, user_controller_1.setDefaultIdentity)(userId, identityId);
}
catch (e) {
logger_1.default.error(`${USER_RESOLVER} setDefaultIdentity: ${e.message}`);
throw e;
}
};
const verifyEmailResolver = async (_, { token }) => {
try {
logger_1.default.info(`${USER_RESOLVER} verifyEmail`);
return (0, user_controller_1.verifyEmail)(token);
}
catch (e) {
logger_1.default.error(`${USER_RESOLVER} verifyEmail: ${e.message}`);
throw e;
}
};
const resendVerificationEmailResolver = async (_, { token }) => {
try {
logger_1.default.info(`${USER_RESOLVER} resendVerificationEmail`);
return (0, user_controller_1.resendVerificationEmail)(token);
}
catch (e) {
logger_1.default.error(`${USER_RESOLVER} resendVerificationEmail: ${e.message}`);
throw e;
}
};
const resendVerificationEmailAfterLoginResolver = async (_, __, ctx) => {
try {
logger_1.default.info(`${USER_RESOLVER} resendVerificationEmailAfterLogin`);
return (0, user_controller_1.resendVerificationEmailAfterLogin)(ctx.userId);
}
catch (e) {
logger_1.default.error(`${USER_RESOLVER} resendVerificationEmailAfterLogin: ${e.message}`);
throw e;
}
};
const updatePasswordResolver = async (_, { input }) => {
try {
logger_1.default.info(`${USER_RESOLVER} updatePassword`);
const { id, currentPassword, newPassword } = input;
return (0, user_controller_1.updatePassword)(id, currentPassword, newPassword);
}
catch (e) {
logger_1.default.error(`${USER_RESOLVER} updatePassword: ${e.message}`);
throw e;
}
};
const sendPasswordResetEmailResolver = async (_, { email }) => {
try {
logger_1.default.info(`${USER_RESOLVER} sendPasswordResetEmail`);
return (0, user_controller_1.sendPasswordResetEmail)(email);
}
catch (e) {
logger_1.default.error(`${USER_RESOLVER} sendPasswordResetEmail: ${e.message}`);
throw e;
}
};
const resetPasswordResolver = async (_, { token, password }) => {
try {
logger_1.default.info(`${USER_RESOLVER} resetPassword`);
return (0, user_controller_1.resetPassword)(token, password);
}
catch (e) {
logger_1.default.error(`${USER_RESOLVER} resetPassword: ${e.message}`);
throw e;
}
};
const identitiesResolver = async (user, _) => {
const identities = await (0, identity_controller_1.getUserIdentities)(user.id);
return identities.result;
// return ctx.loaders.Identity.identitiesBasedOnUserIdsLoader.load(user.id)
};
const defaultIdentityResolver = async (user) => {
return (0, identity_controller_1.getDefaultIdentity)(user.id);
// return ctx.loaders.Identity.defaultIdentityBasedOnUserIdsLoader.load(user.id)
};
const displayNameResolver = (user) => {
return (0, user_controller_1.getDisplayName)(user);
};
// TODO loader
const teamsResolver = async (user) => {
return (0, user_controller_1.getUserTeams)(user);
};
const resolvers = {
Query: {
user: userResolver,
users: usersResolver,
currentUser: currentUserResolver,
},
Mutation: {
activateUser: activateUserResolver,
activateUsers: activateUsersResolver,
deleteUser: deleteUserResolver,
deleteUsers: deleteUsersResolver,
deactivateUser: deactivateUserResolver,
deactivateUsers: deactivateUsersResolver,
updateUser: updateUserResolver,
login: loginResolver,
signUp: signUpResolver,
setDefaultIdentity: setDefaultIdentityResolver,
verifyEmail: verifyEmailResolver,
resendVerificationEmail: resendVerificationEmailResolver,
resendVerificationEmailAfterLogin: resendVerificationEmailAfterLoginResolver,
updatePassword: updatePasswordResolver,
sendPasswordResetEmail: sendPasswordResetEmailResolver,
resetPassword: resetPasswordResolver,
},
User: {
identities: identitiesResolver,
defaultIdentity: defaultIdentityResolver,
displayName: displayNameResolver,
teams: teamsResolver,
},
Subscription: {
userUpdated: {
subscribe: async (...args) => {
return (0, graphql_subscriptions_1.withFilter)(() => {
return pubsub_1.default.asyncIterator(USER_UPDATED);
}, (payload, variables) => {
return variables?.userId === payload.userUpdated.id;
})(...args);
},
},
},
};
exports.default = resolvers;
//# sourceMappingURL=user.resolvers.js.map