UNPKG

@wepublish/api

Version:
200 lines 5.93 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getImportedEventsIds = exports.getEvents = exports.createEventFilter = exports.createEventOrder = exports.EventSort = exports.getEvent = void 0; const tslib_1 = require("tslib"); const api_1 = require("../../../../utils-api/src"); const getEvent = (id, event) => { return event.findUnique({ where: { id } }); }; exports.getEvent = getEvent; var EventSort; (function (EventSort) { EventSort["CreatedAt"] = "CreatedAt"; EventSort["ModifiedAt"] = "ModifiedAt"; EventSort["StartsAt"] = "StartsAt"; EventSort["EndsAt"] = "EndsAt"; })(EventSort || (exports.EventSort = EventSort = {})); const createEventOrder = (field, sortOrder) => { switch (field) { case EventSort.ModifiedAt: return { modifiedAt: (0, api_1.graphQLSortOrderToPrisma)(sortOrder) }; case EventSort.CreatedAt: return { createdAt: (0, api_1.graphQLSortOrderToPrisma)(sortOrder) }; case EventSort.EndsAt: return { endsAt: (0, api_1.graphQLSortOrderToPrisma)(sortOrder) }; case EventSort.StartsAt: default: return { startsAt: (0, api_1.graphQLSortOrderToPrisma)(sortOrder) }; } }; exports.createEventOrder = createEventOrder; const createTagFilter = (filter) => { var _a; if ((_a = filter === null || filter === void 0 ? void 0 : filter.tags) === null || _a === void 0 ? void 0 : _a.length) { return { tags: { some: { tagId: { in: filter === null || filter === void 0 ? void 0 : filter.tags } } } }; } return {}; }; const createUpcomingOnlyFilter = (filter) => { if (filter === null || filter === void 0 ? void 0 : filter.upcomingOnly) { return { OR: [ { startsAt: { gte: new Date() } }, { endsAt: { gte: new Date() } } ] }; } return {}; }; const createFromFilter = (filter) => { if (filter === null || filter === void 0 ? void 0 : filter.from) { return { OR: [ { startsAt: { gte: filter.from } }, { endsAt: { gte: filter.from } } ] }; } return {}; }; const createToFilter = (filter) => { if (filter === null || filter === void 0 ? void 0 : filter.to) { return { OR: [ { startsAt: { lte: filter.to } }, { endsAt: { lte: filter.to } } ] }; } return {}; }; const createNameFilter = (filter) => { if (filter === null || filter === void 0 ? void 0 : filter.name) { return { OR: [ { name: { contains: filter.name, mode: 'insensitive' } } ] }; } return {}; }; const createLocationFilter = (filter) => { if (filter === null || filter === void 0 ? void 0 : filter.location) { return { OR: [ { location: { contains: filter.location, mode: 'insensitive' } } ] }; } return {}; }; const createEventFilter = (filter) => ({ AND: [ createUpcomingOnlyFilter(filter), createFromFilter(filter), createToFilter(filter), createTagFilter(filter), createNameFilter(filter), createLocationFilter(filter) ] }); exports.createEventFilter = createEventFilter; const getEvents = (filter, sortedField, order, cursorId, skip, take, event) => tslib_1.__awaiter(void 0, void 0, void 0, function* () { const orderBy = (0, exports.createEventOrder)(sortedField, order); const where = (0, exports.createEventFilter)(filter); const [totalCount, events] = yield Promise.all([ event.count({ where, orderBy }), event.findMany({ where, skip, take: (0, api_1.getMaxTake)(take) + 1, orderBy, cursor: cursorId ? { id: cursorId } : undefined }) ]); const nodes = events.slice(0, take); const firstEvent = nodes[0]; const lastEvent = nodes[nodes.length - 1]; const hasPreviousPage = Boolean(skip); const hasNextPage = events.length > nodes.length; return { nodes, totalCount, pageInfo: { hasPreviousPage, hasNextPage, startCursor: firstEvent === null || firstEvent === void 0 ? void 0 : firstEvent.id, endCursor: lastEvent === null || lastEvent === void 0 ? void 0 : lastEvent.id } }; }); exports.getEvents = getEvents; const getImportedEventsIds = (event) => tslib_1.__awaiter(void 0, void 0, void 0, function* () { const externalEventsIds = event .findMany({ where: { externalSourceId: { not: null } } }) .then(res => res.map(single => single.externalSourceId)); return externalEventsIds; }); exports.getImportedEventsIds = getImportedEventsIds; //# sourceMappingURL=event.query.js.map