UNPKG

@wepublish/api

Version:
86 lines 2.85 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getTags = exports.createTagFilter = exports.createTagOrder = exports.TagSort = void 0; const tslib_1 = require("tslib"); const api_1 = require("../../../../utils-api/src"); var TagSort; (function (TagSort) { TagSort["CreatedAt"] = "CreatedAt"; TagSort["ModifiedAt"] = "ModifiedAt"; TagSort["Tag"] = "Tag"; })(TagSort || (exports.TagSort = TagSort = {})); const createTagOrder = (field, sortOrder) => { switch (field) { case TagSort.Tag: return { tag: (0, api_1.graphQLSortOrderToPrisma)(sortOrder) }; case TagSort.ModifiedAt: return { modifiedAt: (0, api_1.graphQLSortOrderToPrisma)(sortOrder) }; case TagSort.CreatedAt: default: return { createdAt: (0, api_1.graphQLSortOrderToPrisma)(sortOrder) }; } }; exports.createTagOrder = createTagOrder; const createTypeFilter = (filter) => { if (filter === null || filter === void 0 ? void 0 : filter.type) { return { type: filter === null || filter === void 0 ? void 0 : filter.type }; } return {}; }; const createTagNameFilter = (filter) => { if (filter === null || filter === void 0 ? void 0 : filter.tag) { return { tag: { mode: 'insensitive', contains: filter.tag } }; } return {}; }; const createTagFilter = (filter) => ({ AND: [createTypeFilter(filter), createTagNameFilter(filter)] }); exports.createTagFilter = createTagFilter; const getTags = (filter, sortedField, order, cursorId, skip, take, tag) => tslib_1.__awaiter(void 0, void 0, void 0, function* () { const orderBy = (0, exports.createTagOrder)(sortedField, order); const where = (0, exports.createTagFilter)(filter); const [totalCount, tags] = yield Promise.all([ tag.count({ where, orderBy }), tag.findMany({ where, skip, take: (0, api_1.getMaxTake)(take) + 1, orderBy, cursor: cursorId ? { id: cursorId } : undefined }) ]); const nodes = tags.slice(0, take); const firstTag = nodes[0]; const lastTag = nodes[nodes.length - 1]; const hasPreviousPage = Boolean(skip); const hasNextPage = tags.length > nodes.length; return { nodes, totalCount, pageInfo: { hasPreviousPage, hasNextPage, startCursor: firstTag === null || firstTag === void 0 ? void 0 : firstTag.id, endCursor: lastTag === null || lastTag === void 0 ? void 0 : lastTag.id } }; }); exports.getTags = getTags; //# sourceMappingURL=tag.query.js.map