UNPKG

stagify

Version:

mongoose aggregate pipeline parser

47 lines (46 loc) 1.62 kB
"use strict"; 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;