97 lines
1.9 KiB
JavaScript
Raw Normal View History

2019-06-03 21:00:03 +02:00
'use strict';
const _ = require('lodash');
module.exports = (value, type, key) => {
const result = {};
switch (type) {
case '=':
result.key = `where.${key}`;
result.value = {
symbol: '=',
value,
};
break;
case '_ne':
result.key = `where.${key}`;
result.value = {
symbol: '!=',
value,
};
break;
case '_lt':
result.key = `where.${key}`;
result.value = {
symbol: '<',
value,
};
break;
case '_gt':
result.key = `where.${key}`;
result.value = {
symbol: '>',
value,
};
break;
case '_lte':
result.key = `where.${key}`;
result.value = {
symbol: '<=',
value,
};
break;
case '_gte':
result.key = `where.${key}`;
result.value = {
symbol: '>=',
value,
};
break;
case '_sort':
result.key = 'sort';
result.value = {
key,
order: value.toUpperCase(),
};
break;
case '_start':
result.key = 'start';
result.value = parseFloat(value);
break;
case '_limit':
result.key = 'limit';
result.value = parseFloat(value);
break;
case '_populate':
result.key = 'populate';
result.value = value;
break;
case '_contains':
case '_containss':
result.key = `where.${key}`;
result.value = {
symbol: 'like',
value: `%${value}%`,
};
break;
case '_in':
result.key = `where.${key}`;
result.value = {
symbol: 'IN',
value: _.castArray(value),
};
break;
case '_nin':
result.key = `where.${key}`;
result.value = {
symbol: 'NOT IN',
value: _.castArray(value),
};
break;
default:
return undefined;
}
return result;
};