stagify
Version:
mongoose aggregate pipeline parser
47 lines (46 loc) • 1.62 kB
JavaScript
;
var __rest = (this && this.__rest) || function (s, e) {
var t = {};
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
t[p] = s[p];
if (s != null && typeof Object.getOwnPropertySymbols === "function")
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
t[p[i]] = s[p[i]];
}
return t;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.querify = querify;
var qs = require("qs");
var map_filter_1 = require("./map_filter");
var map_options_1 = require("./map_options");
function querify(q) {
var query;
if (typeof q === 'string') {
query = qs.parse(q);
}
else {
query = q;
}
var select = query.select, page = query.page, limit = query.limit, sort = query.sort, params = __rest(query, ["select", "page", "limit", "sort"]);
var filters = (0, map_filter_1.mapFilters)(params);
var options = (0, map_options_1.mapOptions)(page, limit, sort);
var project = {};
if (typeof select === 'object' && !Array.isArray(select)) {
for (var field in select) {
if (typeof select[field] === 'string') {
var str = select[field];
if (typeof str === 'string') {
project[field] = parseInt(str, 10);
}
}
}
}
return {
filters: filters,
select: project,
options: options,
};
}
exports.default = querify;