@wepublish/api
Version:
API core for we.publish.
92 lines • 3.02 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getImages = exports.createImageFilter = exports.createImageOrder = void 0;
const tslib_1 = require("tslib");
const image_1 = require("../../db/image");
const api_1 = require("../../../../utils-api/src");
const createImageOrder = (field, sortOrder) => {
switch (field) {
case image_1.ImageSort.CreatedAt:
return {
createdAt: (0, api_1.graphQLSortOrderToPrisma)(sortOrder)
};
case image_1.ImageSort.ModifiedAt:
return {
modifiedAt: (0, api_1.graphQLSortOrderToPrisma)(sortOrder)
};
}
};
exports.createImageOrder = createImageOrder;
const createTitleFilter = (filter) => {
if (filter === null || filter === void 0 ? void 0 : filter.title) {
return {
OR: [
{
title: {
contains: filter.title,
mode: 'insensitive'
}
},
{
filename: {
contains: filter.title,
mode: 'insensitive'
}
}
]
};
}
return {};
};
const createTagsFilter = (filter) => {
var _a;
if ((_a = filter === null || filter === void 0 ? void 0 : filter.tags) === null || _a === void 0 ? void 0 : _a.length) {
return {
tags: {
hasSome: filter.tags
}
};
}
return {};
};
const createImageFilter = (filter) => ({
AND: [createTitleFilter(filter), createTagsFilter(filter)]
});
exports.createImageFilter = createImageFilter;
const getImages = (filter, sortedField, order, cursorId, skip, take, image) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
const orderBy = (0, exports.createImageOrder)(sortedField, order);
const where = (0, exports.createImageFilter)(filter);
const [totalCount, images] = yield Promise.all([
image.count({
where,
orderBy
}),
image.findMany({
where,
skip,
take: (0, api_1.getMaxTake)(take) + 1,
orderBy,
cursor: cursorId ? { id: cursorId } : undefined,
include: {
focalPoint: true
}
})
]);
const nodes = images.slice(0, take);
const firstImage = nodes[0];
const lastImage = nodes[nodes.length - 1];
const hasPreviousPage = Boolean(skip);
const hasNextPage = images.length > nodes.length;
return {
nodes,
totalCount,
pageInfo: {
hasPreviousPage,
hasNextPage,
startCursor: firstImage === null || firstImage === void 0 ? void 0 : firstImage.id,
endCursor: lastImage === null || lastImage === void 0 ? void 0 : lastImage.id
}
};
});
exports.getImages = getImages;
//# sourceMappingURL=image.queries.js.map