UNPKG

@wepublish/api

Version:
69 lines 2.73 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.updateEvent = exports.createEvent = exports.deleteEvent = void 0; const tslib_1 = require("tslib"); const permissions_1 = require("../permissions"); const api_1 = require("../../../../permissions-api/src"); const apollo_server_express_1 = require("apollo-server-express"); const deleteEvent = (eventId, authenticate, event) => { const { roles } = authenticate(); (0, permissions_1.authorise)(api_1.CanDeleteEvent, roles); return event.delete({ where: { id: eventId } }); }; exports.deleteEvent = deleteEvent; const validateEvent = ({ startsAt, endsAt }) => { if (endsAt && new Date(startsAt) > new Date(endsAt)) { throw new apollo_server_express_1.ApolloError('endsAt can not be earlier than startsAt'); } }; const createEvent = (input, tagIds, authenticate, event) => { const { roles } = authenticate(); (0, permissions_1.authorise)(api_1.CanCreateEvent, roles); validateEvent(input); return event.create({ data: Object.assign(Object.assign({}, input), { tags: { create: tagIds === null || tagIds === void 0 ? void 0 : tagIds.map(tagId => ({ tagId })) } }) }); }; exports.createEvent = createEvent; const updateEvent = (eventId, input, tagIds, authenticate, event) => tslib_1.__awaiter(void 0, void 0, void 0, function* () { const { roles } = authenticate(); (0, permissions_1.authorise)(api_1.CanUpdateEvent, roles); const oldEvent = yield event.findUnique({ where: { id: eventId } }); validateEvent(Object.assign({ startsAt: oldEvent === null || oldEvent === void 0 ? void 0 : oldEvent.startsAt, endsAt: oldEvent === null || oldEvent === void 0 ? void 0 : oldEvent.endsAt }, input)); return event.update({ where: { id: eventId }, data: Object.assign(Object.assign({}, input), { tags: tagIds ? { connectOrCreate: tagIds.map(tagId => ({ where: { eventId_tagId: { eventId, tagId } }, create: { tagId } })), deleteMany: { eventId, tagId: { notIn: tagIds } } } : undefined }) }); }); exports.updateEvent = updateEvent; //# sourceMappingURL=event.private-mutation.js.map