sails-sql-criteria
Version:
Support using a SQL WHERE clause to filter results
49 lines (34 loc) • 1.15 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', {
value: true
});
exports['default'] = SqlCriteriaPolicy;
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var _lodash = require('lodash');
var _lodash2 = _interopRequireDefault(_lodash);
var _sqlParser = require('sql-parser');
function SqlCriteriaPolicy(req, res, next) {
if (req.query && _lodash2['default'].isString(req.query.sql)) {
req.query = buildWaterlineCriteria(req.query.sql);
console.log(req.query);
}
next();
}
function buildWaterlineCriteria(sql) {
console.log(sql);
var tokens = _sqlParser.lexer.tokenize(sql);
console.log(tokens);
var criteria = _lodash2['default'].reduce(tokens, function (result, token, i) {
var type = token[0];
var value = token[1];
var nextToken = tokens[i + 1];
if (!_lodash2['default'].contains(['LITERAL'], type)) return result;
if (type == 'LITERAL' && nextToken[0] == 'OPERATOR') {
result[value] = tokens[i + 2][1];
}
return result;
}, {});
console.log(criteria);
return criteria;
}
module.exports = exports['default'];