stagify
Version:
mongoose aggregate pipeline parser
36 lines (35 loc) • 1.11 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.stagify = stagify;
var querify_1 = require("./querify");
var index_1 = require("./index");
function stagify(query) {
var _a = (0, querify_1.default)(query), filters = _a.filters, select = _a.select, options = _a.options;
var skip = options.skip, limit = options.limit, sort = options.sort;
var stages = [
{
$match: filters,
},
];
var project = (0, index_1.projectize)(select);
if (project)
stages.push(project);
if (sort && (0, index_1.isValidObject)(sort)) {
for (var key in sort) {
sort[key] = typeof sort[key] === 'string' ? parseInt(sort[key]) : sort[key];
}
stages.push({
$sort: sort,
});
}
if (options.limit || filters.page) {
stages.push({
$skip: typeof skip === 'string' ? parseInt(skip) : skip,
});
stages.push({
$limit: typeof limit === 'string' ? parseInt(limit) : limit,
});
}
return stages;
}
exports.default = stagify;