UNPKG

@wepublish/api

Version:
90 lines 3.06 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getAuthors = exports.createAuthorFilter = exports.createAuthorOrder = void 0; const tslib_1 = require("tslib"); const api_1 = require("../../../../utils-api/src"); const author_1 = require("../../db/author"); const createAuthorOrder = (field, sortOrder) => { switch (field) { case author_1.AuthorSort.CreatedAt: return { createdAt: (0, api_1.graphQLSortOrderToPrisma)(sortOrder) }; case author_1.AuthorSort.ModifiedAt: return { modifiedAt: (0, api_1.graphQLSortOrderToPrisma)(sortOrder) }; case author_1.AuthorSort.Name: return { name: (0, api_1.graphQLSortOrderToPrisma)(sortOrder) }; } }; exports.createAuthorOrder = createAuthorOrder; const createNameFilter = (filter) => { if (filter === null || filter === void 0 ? void 0 : filter.name) { return { name: { contains: filter.name, mode: 'insensitive' } }; } return {}; }; const createTagIdsFilter = (filter) => { var _a; if ((_a = filter === null || filter === void 0 ? void 0 : filter.tagIds) === null || _a === void 0 ? void 0 : _a.length) { return { tags: { some: { tagId: { in: filter === null || filter === void 0 ? void 0 : filter.tagIds } } } }; } return {}; }; const createAuthorFilter = (filter) => ({ AND: [createNameFilter(filter), createTagIdsFilter(filter)] }); exports.createAuthorFilter = createAuthorFilter; const getAuthors = (filter, sortedField, order, cursorId, skip, take, author) => tslib_1.__awaiter(void 0, void 0, void 0, function* () { const orderBy = (0, exports.createAuthorOrder)(sortedField, order); const where = (0, exports.createAuthorFilter)(filter); const [totalCount, authors] = yield Promise.all([ author.count({ where, orderBy }), author.findMany({ where, skip, take: (0, api_1.getMaxTake)(take) + 1, orderBy, cursor: cursorId ? { id: cursorId } : undefined, include: { links: true } }) ]); const nodes = authors.slice(0, take); const firstAuthor = nodes[0]; const lastAuthor = nodes[nodes.length - 1]; const hasPreviousPage = Boolean(skip); const hasNextPage = authors.length > nodes.length; return { nodes, totalCount, pageInfo: { hasPreviousPage, hasNextPage, startCursor: firstAuthor === null || firstAuthor === void 0 ? void 0 : firstAuthor.id, endCursor: lastAuthor === null || lastAuthor === void 0 ? void 0 : lastAuthor.id } }; }); exports.getAuthors = getAuthors; //# sourceMappingURL=author.queries.js.map