UNPKG

@sugo/mongodb-queryparams

Version:

Unique Queryparams sintax (Inspired in Elastic Search) that creates queries for MongoDB

81 lines 2.85 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const assert = require("assert"); const InvalidQueryParamException_1 = require("./exceptions/InvalidQueryParamException"); const parsers = require("./parsers"); const utils_1 = require("./utils"); class MongoDbQueryParams { static get defaultLimit() { return 99999; } static parseSkip(rawSkip) { try { return typeof rawSkip === 'number' ? rawSkip : parseInt(rawSkip, 10); } catch (error) { throw new InvalidQueryParamException_1.default('skip', rawSkip); } } static parseLimit(rawLimit) { try { return typeof rawLimit === 'number' ? rawLimit : parseInt(rawLimit, 10); } catch (error) { throw new InvalidQueryParamException_1.default('limit', rawLimit); } } static parseSelect(rawSelect) { try { rawSelect = rawSelect.trim(); const parser = parsers.getSelectGrammar(); const [select] = parser.feed(rawSelect).results; return select; } catch (error) { throw new InvalidQueryParamException_1.default('fields', rawSelect); } } static parseSort(rawSort) { try { assert(typeof rawSort === 'string' || rawSort instanceof String); rawSort = rawSort.trim(); const parser = parsers.getSortGrammar(); const [sort] = parser.feed(rawSort).results; return sort; } catch (error) { throw new InvalidQueryParamException_1.default('sort', rawSort); } } static parseFilter(rawFilter) { try { rawFilter = rawFilter.trim(); if (!rawFilter) { return {}; } const parser = parsers.getFilterGrammar(); let [filter] = parser.feed(rawFilter).results; filter = utils_1.cleanQuery(filter); filter = utils_1.parseObjectIds(filter); return filter; } catch (error) { throw new InvalidQueryParamException_1.default('filter', rawFilter); } } static parseQueryParams(raw) { return { skip: raw.skip ? this.parseSkip(raw.skip) : 0, limit: raw.limit ? this.parseLimit(raw.limit) : this.defaultLimit, sort: raw.sort ? this.parseSort(raw.sort) : {}, select: raw.select ? this.parseSelect(raw.select) : {}, filter: raw.filter ? this.parseFilter(raw.filter) : {}, }; } constructor() { throw new Error('This class is not meant to be initialized, is static'); } } exports.MongoDbQueryParams = MongoDbQueryParams; exports.default = MongoDbQueryParams; //# sourceMappingURL=MongoDBQueryParams.js.map