@wepublish/api
Version:
API core for we.publish.
90 lines • 3.07 kB
JavaScript
;
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("../../../../permissions-api/src");
const api_2 = require("../../../../utils-api/src");
const permissions_1 = require("../permissions");
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_2.graphQLSortOrderToPrisma)(sortOrder)
};
case TagSort.ModifiedAt:
return {
modifiedAt: (0, api_2.graphQLSortOrderToPrisma)(sortOrder)
};
case TagSort.CreatedAt:
default:
return {
createdAt: (0, api_2.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, authenticate, tag) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
const { roles } = authenticate();
(0, permissions_1.authorise)(api_1.CanGetTags, roles);
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_2.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.private-query.js.map