UNPKG

newsql

Version:

Get the best of both worlds

54 lines (47 loc) 1.05 kB
/*! * newsql * authors: Ben Lue * license: GPL 2.0 * Copyright(c) 2015 Gocharm Inc. */ var _noArgOP = ['IS NOT NULL', 'IS NULL']; exports.parseQO = function parseQO(input, query, op) { if (Object.keys(input).length === 0) return null; var filters = []; op = op || 'and'; for (var key in input) { if (key === 'or' || key === 'and') { var f = parseQO(input[key], query, key); if (f) filters.push(f); } else if (typeof input[key] === 'object') { var f, kv = input[key]; if (kv.op) { if (_noArgOP.indexOf(kv.op) >= 0) { f = {name: key, op: kv.op}; query[key] = true; } else if (kv.hasOwnProperty('value')) { f = {name: key, op: kv.op}; query[key] = kv.value; } if (f) filters.push( f ); } else { filters.push( {name: key, op: '='} ); query[key] = kv; } } else { filters.push( {name: key, op: '='} ); query[key] = input[key]; } } if (filters.length > 1) return {op: op, filters: filters}; return filters[0]; };