UNPKG

@wepublish/api

Version:
119 lines 3.71 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getComments = exports.createCommentFilter = exports.createCommentOrder = void 0; const tslib_1 = require("tslib"); const comment_1 = require("../../db/comment"); const api_1 = require("../../../../utils-api/src"); const createCommentOrder = (field, sortOrder) => { switch (field) { case comment_1.CommentSort.CreatedAt: return { createdAt: (0, api_1.graphQLSortOrderToPrisma)(sortOrder) }; case comment_1.CommentSort.ModifiedAt: return { modifiedAt: (0, api_1.graphQLSortOrderToPrisma)(sortOrder) }; } }; exports.createCommentOrder = createCommentOrder; 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 createStateFilter = (filter) => { if (filter === null || filter === void 0 ? void 0 : filter.states) { return { state: { in: filter.states } }; } return {}; }; const createItemFilter = (filter) => { if (filter === null || filter === void 0 ? void 0 : filter.item) { return { itemID: filter.item }; } return {}; }; const createItemTypeFilter = (filter) => { if (filter === null || filter === void 0 ? void 0 : filter.itemType) { return { itemType: { equals: filter.itemType } }; } return {}; }; const createItemIdFilter = (filter) => { if (filter.itemID) { return { itemID: { equals: filter.itemID } }; } return {}; }; const createCommentFilter = (filter) => ({ AND: [ createStateFilter(filter), createTagFilter(filter), createItemTypeFilter(filter), createItemIdFilter(filter), createItemFilter(filter) ] }); exports.createCommentFilter = createCommentFilter; const getComments = (filter, sortedField, order, cursorId, skip, take, comment) => tslib_1.__awaiter(void 0, void 0, void 0, function* () { const orderBy = (0, exports.createCommentOrder)(sortedField, order); const where = (0, exports.createCommentFilter)(filter); const [totalCount, comments] = yield Promise.all([ comment.count({ where, orderBy }), comment.findMany({ where, skip, take: (0, api_1.getMaxTake)(take) + 1, orderBy, cursor: cursorId ? { id: cursorId } : undefined, include: { revisions: { orderBy: { createdAt: 'asc' } } } }) ]); const nodes = comments.slice(0, take); const firstComment = nodes[0]; const lastComment = nodes[nodes.length - 1]; const hasPreviousPage = Boolean(skip); const hasNextPage = comments.length > nodes.length; return { nodes, totalCount, pageInfo: { hasPreviousPage, hasNextPage, startCursor: firstComment === null || firstComment === void 0 ? void 0 : firstComment.id, endCursor: lastComment === null || lastComment === void 0 ? void 0 : lastComment.id } }; }); exports.getComments = getComments; //# sourceMappingURL=comment.queries.js.map