Clean up logging and formatting

This commit is contained in:
Elliot DeNolf
2019-01-25 23:05:51 -05:00
parent 2bd800a2d2
commit af9630bde8
2 changed files with 92 additions and 100 deletions

View File

@@ -3,7 +3,6 @@ import {paramParser} from './paramParser';
export default function apiQueryPlugin(schema) {
schema.statics.apiQuery = function (rawParams, cb) {
console.log(rawParams);
const model = this;
const params = paramParser(this, rawParams);

View File

@@ -1,5 +1,6 @@
/* eslint-disable no-use-before-define,camelcase */
export function paramParser(model, rawParams) {
console.log('raw params', rawParams);
let query = {
searchParams: {},
@@ -14,7 +15,6 @@ export function paramParser(model, rawParams) {
.match(/{\w+}(.[^{}]*)/g);
if (separatedParams === null) {
console.log('separated params null');
query = parseParam(key, rawParams[key], model, query);
} else {
for (let i = 0; i < separatedParams.length; ++i) {
@@ -23,7 +23,7 @@ export function paramParser(model, rawParams) {
}
}
console.log(query, 'query object');
console.log('query object', query);
return query;
}
@@ -35,8 +35,7 @@ function convertToBoolean(str) {
str === '1';
}
function parseParam (key, val, model, query) {
console.log(key, val);
function parseParam(key, val, model, query) {
const lcKey = key;
let operator = val.match(/\{(.*)\}/);
val = val.replace(/\{(.*)\}/, '');
@@ -59,113 +58,107 @@ function parseParam (key, val, model, query) {
return query;
}
function parseSchemaForKey(schema, query, keyPrefix, lcKey, val, operator) {
function parseSchemaForKey(schema, query, keyPrefix, lcKey, val, operator) {
let paramType;
const addSearchParam = value => {
const key = keyPrefix + lcKey;
let paramType;
if (typeof query.searchParams[key] !== 'undefined') {
for (let i in value) {
query.searchParams[key][i] = value[i];
}
} else {
query.searchParams[key] = value;
}
};
const addSearchParam = value => {
const key = keyPrefix + lcKey;
let matches = lcKey.match(/(.+)\.(.+)/);
if (matches) {
// parse subschema
if (schema.paths[matches[1]].constructor.name === 'DocumentArray' ||
schema.paths[matches[1]].constructor.name === 'Mixed') {
parseSchemaForKey(schema.paths[matches[1]].schema, `${matches[1]}.`, matches[2], val, operator)
}
if (typeof query.searchParams[key] !== 'undefined') {
for (let i in value) {
query.searchParams[key][i] = value[i];
}
} else if (typeof schema === 'undefined') {
paramType = 'String';
} else if (typeof schema.paths[lcKey] === 'undefined') {
// nada, not found
} else if (operator === 'near') {
paramType = 'Near';
} else if (schema.paths[lcKey].constructor.name === 'SchemaBoolean') {
paramType = 'Boolean';
} else if (schema.paths[lcKey].constructor.name === 'SchemaString') {
paramType = 'String';
} else if (schema.paths[lcKey].constructor.name === 'SchemaNumber') {
paramType = 'Number';
} else if (schema.paths[lcKey].constructor.name === 'ObjectId') {
paramType = 'ObjectId';
} else if (schema.paths[lcKey].constructor.name === 'SchemaArray') {
paramType = 'Array';
}
if (paramType === 'Boolean') {
addSearchParam(convertToBoolean(val));
} else if (paramType === 'Number') {
if (val.match(/([0-9]+,?)/) && val.match(',')) {
if (operator === 'all') {
addSearchParam({$all: val.split(',')});
} else if (operator === 'nin') {
addSearchParam({$nin: val.split(',')});
} else if (operator === 'mod') {
addSearchParam({$mod: [val.split(',')[0], val.split(',')[1]]});
} else {
query.searchParams[key] = value;
addSearchParam({$in: val.split(',')});
}
};
let matches = lcKey.match(/(.+)\.(.+)/);
if (matches) {
// parse subschema
if (schema.paths[matches[1]].constructor.name === 'DocumentArray' ||
schema.paths[matches[1]].constructor.name === 'Mixed') {
parseSchemaForKey(schema.paths[matches[1]].schema, `${matches[1]}.`, matches[2], val, operator)
} else if (val.match(/([0-9]+)/)) {
if (operator === 'gt' ||
operator === 'gte' ||
operator === 'lt' ||
operator === 'lte' ||
operator === 'ne') {
let newParam = {};
newParam['$' + operator] = val;
addSearchParam(newParam);
} else {
addSearchParam(parseInt(val));
}
} else if (typeof schema === 'undefined') {
paramType = 'String';
} else if (typeof schema.paths[lcKey] === 'undefined') {
// nada, not found
} else if (operator === 'near') {
paramType = 'Near';
} else if (schema.paths[lcKey].constructor.name === 'SchemaBoolean') {
paramType = 'Boolean';
} else if (schema.paths[lcKey].constructor.name === 'SchemaString') {
paramType = 'String';
} else if (schema.paths[lcKey].constructor.name === 'SchemaNumber') {
paramType = 'Number';
} else if (schema.paths[lcKey].constructor.name === 'ObjectId') {
paramType = 'ObjectId';
}
else if (schema.paths[lcKey].constructor.name === 'SchemaArray') {
paramType = 'Array';
}
} else if (paramType === 'String') {
if (val.match(',')) {
const options = val.split(',').map(str => new RegExp(str, 'i'));
console.log('Param Type: ' + paramType);
if (paramType === 'Boolean') {
addSearchParam(convertToBoolean(val));
} else if (paramType === 'Number') {
if (val.match(/([0-9]+,?)/) && val.match(',')) {
if (operator === 'all') {
addSearchParam({$all: val.split(',')});
} else if (operator === 'nin') {
addSearchParam({$nin: val.split(',')});
} else if (operator === 'mod') {
addSearchParam({$mod: [val.split(',')[0], val.split(',')[1]]});
} else {
addSearchParam({$in: val.split(',')});
}
} else if (val.match(/([0-9]+)/)) {
if (operator === 'gt' ||
operator === 'gte' ||
operator === 'lt' ||
operator === 'lte' ||
operator === 'ne') {
let newParam = {};
newParam['$' + operator] = val;
addSearchParam(newParam);
} else {
addSearchParam(parseInt(val));
}
if (operator === 'all') {
addSearchParam({$all: options});
} else if (operator === 'nin') {
addSearchParam({$nin: options});
} else {
addSearchParam({$in: options});
}
} else if (paramType === 'String') {
if (val.match(',')) {
const options = val.split(',').map(str => new RegExp(str, 'i'));
if (operator === 'all') {
addSearchParam({$all: options});
} else if (operator === 'nin') {
addSearchParam({$nin: options});
} else {
addSearchParam({$in: options});
}
} else if (val.match(/([0-9]+)/)) {
if (operator === 'gt' ||
operator === 'gte' ||
operator === 'lt' ||
operator === 'lte') {
let newParam = {};
newParam['$' + operator] = val;
addSearchParam(newParam);
} else {
addSearchParam(val);
}
} else if (operator === 'ne' || operator === 'not') {
const neregex = new RegExp(val, 'i');
addSearchParam({'$not': neregex});
} else if (operator === 'like') {
addSearchParam({$regex: val, $options: '-i'});
} else if (val.match(/([0-9]+)/)) {
if (operator === 'gt' ||
operator === 'gte' ||
operator === 'lt' ||
operator === 'lte') {
let newParam = {};
newParam['$' + operator] = val;
addSearchParam(newParam);
} else {
addSearchParam(val);
}
} else if (paramType === 'ObjectId') {
} else if (operator === 'ne' || operator === 'not') {
const neregex = new RegExp(val, 'i');
addSearchParam({'$not': neregex});
} else if (operator === 'like') {
addSearchParam({$regex: val, $options: '-i'});
} else {
addSearchParam(val);
} else if (paramType === 'Array') {
addSearchParam(val);
console.log(lcKey)
}
return query;
} else if (paramType === 'ObjectId') {
addSearchParam(val);
} else if (paramType === 'Array') {
addSearchParam(val);
}
return query;
}