nestjs-keyset-paginator
Version:
a simple pagination library made for nestjs(mongoose) by hungreebee technologies
45 lines (44 loc) • 2.05 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.generatePaginationFilter = void 0;
const pagination_dto_1 = require("./pagination.dto");
const generate_mongo_filter_key_name_1 = require("../common/generate-mongo-filter-key-name");
/**
* @param {filterDto[]} filter
*/
const generatePaginationFilter = (filter) => {
const filter_fn = {};
for (const filterElement of filter) {
if (filterElement instanceof pagination_dto_1.filterDto) {
console.log('instanceof filterDto');
// console.log('filterElement: ', filterElement)
if (filterElement.operator === 'regex') {
let exp = new RegExp(filterElement.value, 'i');
if (filterElement.mode === 'swm') {
exp = new RegExp('^' + filterElement.value + '.*', 'i');
}
if (filterElement.mode === 'bnm') {
exp = new RegExp('.*' + filterElement.value + '.*', 'i');
}
if (filterElement.mode === 'ewm') {
// console.log('EWM\n');
exp = new RegExp(filterElement.value + '.*', 'i');
}
filter_fn[(0, generate_mongo_filter_key_name_1.generateMongoFilterKeyName)(filterElement.name)] = {
['$' + filterElement.operator]: exp
};
}
else if (filterElement.operator === 'in' || filterElement.operator === 'nin') {
filter_fn[(0, generate_mongo_filter_key_name_1.generateMongoFilterKeyName)(filterElement.name)] = {
['$' + filterElement.operator]: filterElement.arr_value
};
}
else
filter_fn[(0, generate_mongo_filter_key_name_1.generateMongoFilterKeyName)(filterElement.name)] = {
['$' + filterElement.operator]: filterElement.value
};
}
}
return filter_fn;
};
exports.generatePaginationFilter = generatePaginationFilter;