UNPKG

jsonsql

Version:

A SQL-like query language for JSON objects.

220 lines (216 loc) 5.5 kB
var dataSource = { '4866102f06de4f38bc30592e001cf423': { beat: {}, holy: {addr: '88:63:df:a0:d7:03', name: 'CREEPY'}, user: '', config: {}, id: '4866102f06de4f38bc30592e001cf423', state: 2 }, 'd07872f7d2e8447bbe874bbfd3fb0296': { beat: {}, holy: { addr: '5c:51:4f:50:3a:88', name: 'REDSHIT' }, user: '', config: {}, id: 'd07872f7d2e8447bbe874bbfd3fb0296', state: 0 }, 'd935869b80f542a9bf3f6a59d4f635f1': { beat: {}, holy: {addr: '20:76:93:23:a6:c8', name: 'CREEPY'}, user: '', config: {}, id: 'd935869b80f542a9bf3f6a59d4f635f1', state: 0 }, 'b92acdf9865c483dab4cc9474bc2b559': { beat: {}, holy: { addr: '77:7d:88:77:ff:8b', name: 'REDSHIT' }, user: '', config: {}, id: 'b92acdf9865c483dab4cc9474bc2b559', state: 0 }, '741dc8f96dfa4bcc863278b908a4467d': { beat: {}, holy: {addr: '60:d9:c7:41:d4:71', name: 'CREEPY'}, user: '', config: {}, id: '741dc8f96dfa4bcc863278b908a4467d', state: 0 }, 'ef2316c1b57a4b13a12ef40905c635db': { beat: {}, holy: { addr: '58:ba:67:08:8b:f6', name: 'REDSHIT' }, user: '', config: {}, id: 'ef2316c1b57a4b13a12ef40905c635db', state: 0 }, '5b58a2fb901d4c1fa1bc417315fca19c': { beat: {}, holy: { addr: '6e:6c:ba:0f:86:ca', name: 'REDSHIT' }, user: '', config: {}, id: '5b58a2fb901d4c1fa1bc417315fca19c', state: 0 }, '5508298049ef49529d573aa7e40fff0a': { beat: {}, holy: { addr: '5e:be:e5:1a:ba:ab', name: 'REDSHIT' }, user: '', config: {}, id: '5508298049ef49529d573aa7e40fff0a', state: 0 }, 'e9c9a8689687402fa04df4d057b1acad': { beat: {}, holy: { addr: '6c:70:9f:c9:db:df', name: 'REDSHIT' }, user: '', config: {}, id: 'e9c9a8689687402fa04df4d057b1acad', state: 0, }, 'fe1c5639e54b44e58e80eb6f5fa8496f': { beat: {}, holy: { addr: '28:47:aa:26:59:6d', name: 'REDSHIT' }, user: '', config: {}, id: 'fe1c5639e54b44e58e80eb6f5fa8496f', state: 0 }, 'dc5d8b1c142144309be7e4959ac5d308': { beat: {}, holy: { addr: '4e:ca:45:7e:69:49', name: 'REDSHIT' }, user: '', config: {}, id: 'dc5d8b1c142144309be7e4959ac5d308', state: 0 }, '39a68900680448b18b3c440489246786': { beat: {}, holy: { addr: '65:9c:b7:1e:25:e4', name: 'REDSHIT' }, user: '', config: {}, id: '39a68900680448b18b3c440489246786', state: 0 }, '5f7e72a168264eff8063d634e9065c29': { beat: {}, holy: { addr: '43:f8:9c:08:f1:b6', name: 'REDSHIT' }, user: '', config: {}, id: '5f7e72a168264eff8063d634e9065c29', state: 0 }, '0ad27529a85543f28b5692ca46e965c4': { beat: {}, holy: { addr: '71:2d:cf:1c:cf:87', name: 'REDSHIT' }, user: '', config: {}, id: '0ad27529a85543f28b5692ca46e965c4', state: 0 }, '1f69203d5f354272afc3471bcb7d5b34': { beat: {}, holy: {addr: '5c:51:4f:50:3a:84', name: 'CREEPY'}, user: '', config: {}, id: '1f69203d5f354272afc3471bcb7d5b34', state: 0 }, '684e387466324f7bbae2ccbf01aed5ff': { beat: {}, holy: { addr: '44:00:6b:6c:a6:88', name: 'REDSHIT' }, user: '', config: {}, id: '684e387466324f7bbae2ccbf01aed5ff', state: 0 }, 'f2476e81698e42d3b62d5cea3888fd98': { beat: {}, holy: { addr: '4f:f8:fe:af:5b:43', name: 'REDSHIT' }, user: '', config: {}, id: 'f2476e81698e42d3b62d5cea3888fd98', state: 0 }, 'f2de1084a1f142258d5849428f09e39f': { beat: {}, holy: { addr: '77:32:8a:c5:dd:63', name: 'REDSHIT' }, user: '', config: {}, id: 'f2de1084a1f142258d5849428f09e39f', state: 0, date: '2012-05' }, 'cff9580b2efa4a2ba84784c1ac80eb09': { beat: {}, holy: { addr: '7f:e8:ee:32:cd:15', name: 'CRAP' }, user: '', config: {}, id: 'cff9580b2efa4a2ba84784c1ac80eb09', state: 1 } }; function __iterate(obj) { for (var k in obj) { if (obj.hasOwnProperty(k)) { if (!Array.isArray(obj[k]) && typeof obj[k] === 'object') { __iterate(obj[k]); } else { console.log(k, ':', obj[k]); } } } } var Query = require('../index'); var res = Query(dataSource, '* where holy.name=CRAP || (holy.name=CREEPY && (state=1 || state=2))'); console.log('======RESULT 1\n',res); var res = Query(dataSource, '*.id, *.holy.addr where holy.name=CRAP'); console.log('======RESULT 2\n',res);