@coko/server
Version:
Reusable server for use by Coko's projects
117 lines • 4.07 kB
JavaScript
;
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