@sugo/mongodb-queryparams
Version:
Unique Queryparams sintax (Inspired in Elastic Search) that creates queries for MongoDB
81 lines • 2.85 kB
JavaScript
;
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