@blogcode/nest-typeorm-pagination
Version:
Pagination offset-based and cursor-based for NestJS
47 lines (46 loc) • 1.64 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.MAX_LIMIT = exports.DEFAULT_LIMIT = void 0;
exports.isBaseType = isBaseType;
exports.getFilters = getFilters;
exports.getOrder = getOrder;
exports.getCursorDirection = getCursorDirection;
exports.DEFAULT_LIMIT = 10;
exports.MAX_LIMIT = 1000;
function isBaseType(value) {
return ['string', 'number', 'boolean'].includes(typeof value) || value === null;
}
function getFilters(query) {
const filters = {};
if (typeof (query === null || query === void 0 ? void 0 : query.filters) === 'object') {
Object.keys(query.filters).forEach((key) => {
const value = query.filters[key];
if (typeof value === 'object') {
filters[key] = {
value: value.value,
operator: value.operator,
};
}
else if (isBaseType(value)) {
filters[key] = {
value,
operator: 'eq',
};
}
});
}
return filters;
}
function getOrder(query) {
const order = {};
if (typeof (query === null || query === void 0 ? void 0 : query.order) === 'object') {
Object.keys(query.order).forEach((key) => {
order[key] = parseInt(query.order[key]) === 1 ? 1 : 0;
});
}
return order;
}
function getCursorDirection(query) {
const direction = query === null || query === void 0 ? void 0 : query.direction;
return (direction === null || direction === void 0 ? void 0 : direction.toLowerCase()) === 'prev' ? 'prev' : 'next';
}
;