UNPKG

@coko/server

Version:

Reusable server for use by Coko's projects

117 lines 4.07 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const logger_1 = __importDefault(require("../../logger")); const pubsub_1 = __importDefault(require("../../graphql/pubsub")); const constants_1 = require("./constants"); const constants_2 = require("../user/constants"); const team_controller_1 = require("./team.controller"); const user_controller_1 = require("../user/user.controller"); const teamMember_model_1 = __importDefault(require("../teamMember/teamMember.model")); const { TEAM_RESOLVER } = constants_1.labels; const { USER_UPDATED } = constants_2.subscriptions; const broadcastUserUpdated = async (userId) => { try { const updatedUser = await (0, user_controller_1.getUser)(userId); pubsub_1.default.publish(USER_UPDATED, { userUpdated: updatedUser, }); } catch (e) { throw new Error(e.message); } }; const teamResolver = async (_, { id }) => { try { logger_1.default.info(`${TEAM_RESOLVER} team`); return (0, team_controller_1.getTeam)(id); } catch (e) { logger_1.default.error(`${TEAM_RESOLVER} team: ${e.message}`); throw e; } }; const teamsResolver = async (_, { filter }) => { try { logger_1.default.info(`${TEAM_RESOLVER} teams`); return (0, team_controller_1.getTeams)(filter); } catch (e) { logger_1.default.error(`${TEAM_RESOLVER} teams: ${e.message}`); throw e; } }; const updateTeamMembershipResolver = async (_, { teamId, members }) => { try { logger_1.default.info(`${TEAM_RESOLVER} updateTeamMembership`); const updatedTeam = await (0, team_controller_1.updateTeamMembership)(teamId, members); await Promise.all(members.map(async (userId) => broadcastUserUpdated(userId))); return updatedTeam; } catch (e) { logger_1.default.error(`${TEAM_RESOLVER} updateTeamMembership: ${e.message}`); throw e; } }; const addTeamMemberResolver = async (_, { teamId, userId }) => { try { logger_1.default.info(`${TEAM_RESOLVER} addTeamMember`); const updatedTeam = await (0, team_controller_1.addTeamMember)(teamId, userId); await broadcastUserUpdated(userId); return updatedTeam; } catch (e) { logger_1.default.error(`${TEAM_RESOLVER} addTeamMember: ${e.message}`); throw e; } }; const removeTeamMemberResolver = async (_, { teamId, userId }) => { try { logger_1.default.info(`${TEAM_RESOLVER} removeTeamMember`); const updatedTeam = await (0, team_controller_1.removeTeamMember)(teamId, userId); await broadcastUserUpdated(userId); return updatedTeam; } catch (e) { logger_1.default.error(`${TEAM_RESOLVER} removeTeamMember: ${e.message}`); throw e; } }; // const deleteTeamResolver = async (_, { id }) => { // try { // logger.info(`${TEAM_RESOLVER} deleteTeam`) // return deleteTeam(id) // } catch (e) { // logger.error(`${TEAM_RESOLVER} deleteTeam: ${e.message}`) // throw e // } // } const teamMemberResolver = async (team, { currentUserOnly }, ctx) => { // const { id } = team // return ctx.loaders.TeamMember.teamMembersBasedOnTeamIdsLoader.load(id) const where = { teamId: team.id, ...(currentUserOnly ? { userId: ctx.userId } : {}), }; const { result: members } = await teamMember_model_1.default.find(where); return members; }; const resolvers = { Query: { team: teamResolver, teams: teamsResolver, }, Mutation: { updateTeamMembership: updateTeamMembershipResolver, addTeamMember: addTeamMemberResolver, removeTeamMember: removeTeamMemberResolver, // deleteTeam:deleteTeamResolver, }, Team: { members: teamMemberResolver, }, }; exports.default = resolvers; //# sourceMappingURL=team.resolvers.js.map