UNPKG

@wepublish/api

Version:
94 lines 3.14 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getPolls = exports.createPollFilter = exports.createPollOrder = exports.PollSort = void 0; const tslib_1 = require("tslib"); const api_1 = require("../../../../permissions-api/src"); const api_2 = require("../../../../utils-api/src"); const permissions_1 = require("../permissions"); var PollSort; (function (PollSort) { PollSort["CreatedAt"] = "CreatedAt"; PollSort["ModifiedAt"] = "ModifiedAt"; PollSort["OpensAt"] = "OpensAt"; })(PollSort || (exports.PollSort = PollSort = {})); const createPollOrder = (field, sortOrder) => { switch (field) { case PollSort.ModifiedAt: return { modifiedAt: (0, api_2.graphQLSortOrderToPrisma)(sortOrder) }; case PollSort.CreatedAt: return { createdAt: (0, api_2.graphQLSortOrderToPrisma)(sortOrder) }; case PollSort.OpensAt: default: return { opensAt: (0, api_2.graphQLSortOrderToPrisma)(sortOrder) }; } }; exports.createPollOrder = createPollOrder; const createOpenOnlyFilter = (filter) => { if (filter === null || filter === void 0 ? void 0 : filter.openOnly) { return { opensAt: { lte: new Date() }, OR: [ { closedAt: null }, { closedAt: { gte: new Date() } } ] }; } return {}; }; const createPollFilter = (filter) => ({ AND: [createOpenOnlyFilter(filter)] }); exports.createPollFilter = createPollFilter; const getPolls = (filter, sortedField, order, cursorId, skip, take, authenticate, poll) => tslib_1.__awaiter(void 0, void 0, void 0, function* () { const { roles } = authenticate(); (0, permissions_1.authorise)(api_1.CanGetPoll, roles); const orderBy = (0, exports.createPollOrder)(sortedField, order); const where = (0, exports.createPollFilter)(filter); const [totalCount, polls] = yield Promise.all([ poll.count({ where, orderBy }), poll.findMany({ where, skip, take: (0, api_2.getMaxTake)(take) + 1, orderBy, cursor: cursorId ? { id: cursorId } : undefined, include: { answers: true } }) ]); const nodes = polls.slice(0, take); const firstPoll = nodes[0]; const lastPoll = nodes[nodes.length - 1]; const hasPreviousPage = Boolean(skip); const hasNextPage = polls.length > nodes.length; return { nodes, totalCount, pageInfo: { hasPreviousPage, hasNextPage, startCursor: firstPoll === null || firstPoll === void 0 ? void 0 : firstPoll.id, endCursor: lastPoll === null || lastPoll === void 0 ? void 0 : lastPoll.id } }; }); exports.getPolls = getPolls; //# sourceMappingURL=poll.private-queries.js.map