@wepublish/api
Version:
API core for we.publish.
69 lines • 2.73 kB
JavaScript
;
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