gitrows
Advanced tools
Comparing version 0.7.17 to 0.8.0
@@ -31,2 +31,8 @@ # Filters | ||
You can also supply multiple expressions and values per field name. All expressions will be handled as logical `AND`. This is especially useful for selecting ranges: | ||
``` | ||
https://api.gitrows.com/@github/gitrows/data/iris.json?petalLength=lt:1.5&petalLength=gt:1 | ||
``` | ||
## Aggregate Functions | ||
@@ -33,0 +39,0 @@ |
@@ -19,2 +19,12 @@ | ||
```js | ||
gitrows.get(path,{'some_numerical_field':'gt:10'}); | ||
``` | ||
You can also supply an array of expressions per field name. All expressions will be handled as logical `AND`. This is especially useful for selecting ranges: | ||
```js | ||
gitrows.get(path,{'some_numerical_field':['gt:10','lt:20']}); | ||
``` | ||
## Aggregate Functions | ||
@@ -21,0 +31,0 @@ |
@@ -22,42 +22,46 @@ const Util={ | ||
if (key.indexOf('$')==0) return; | ||
let value=filter[key].toString(); | ||
if (value.indexOf(':')>-1){ | ||
value=value.split(':'); | ||
switch (value[0].toLowerCase()) { | ||
case 'gt': | ||
obj = obj.filter(item=>item[key]!==undefined&&item[key]>value[1]); | ||
break; | ||
case 'gte': | ||
obj = obj.filter(item=>item[key]!==undefined&&item[key]>=value[1]); | ||
break; | ||
case 'lt': | ||
obj = obj.filter(item=>item[key]!==undefined&&item[key]<value[1]); | ||
break; | ||
case 'lte': | ||
obj = obj.filter(item=>item[key]!==undefined&&item[key]<=value[1]); | ||
break; | ||
case 'not': | ||
obj = obj.filter(item=>item[key]!==undefined&&item[key]!=value[1]); | ||
break; | ||
case 'eq': | ||
obj = obj.filter(item=>item[key]!==undefined&&item[key]==value[1]); | ||
break; | ||
case 'starts': | ||
case '^': | ||
obj = obj.filter(item=>item[key]!==undefined&&typeof item[key]=='string'&&item[key].toLowerCase().startsWith(value[1].toLowerCase())); | ||
break; | ||
case 'ends': | ||
case '$': | ||
obj = obj.filter(item=>item[key]!==undefined&&typeof item[key]=='string'&&item[key].toLowerCase().endsWith(value[1].toLowerCase())); | ||
break; | ||
case 'contains': | ||
case '*': | ||
obj = obj.filter(item=>item[key]!==undefined&&typeof item[key]=='string'&&~item[key].toLowerCase().indexOf(value[1].toLowerCase())); | ||
break; | ||
let values=filter[key]; | ||
if (!Array.isArray(values)) values=[values]; | ||
values.forEach((item, i) => { | ||
let value=item.toString(); | ||
if (value.indexOf(':')>-1){ | ||
value=value.split(':'); | ||
switch (value[0].toLowerCase()) { | ||
case 'gt': | ||
obj = obj.filter(item=>item[key]!==undefined&&item[key]>value[1]); | ||
break; | ||
case 'gte': | ||
obj = obj.filter(item=>item[key]!==undefined&&item[key]>=value[1]); | ||
break; | ||
case 'lt': | ||
obj = obj.filter(item=>item[key]!==undefined&&item[key]<value[1]); | ||
break; | ||
case 'lte': | ||
obj = obj.filter(item=>item[key]!==undefined&&item[key]<=value[1]); | ||
break; | ||
case 'not': | ||
obj = obj.filter(item=>item[key]!==undefined&&item[key]!=value[1]); | ||
break; | ||
case 'eq': | ||
obj = obj.filter(item=>item[key]!==undefined&&item[key]==value[1]); | ||
break; | ||
case 'starts': | ||
case '^': | ||
obj = obj.filter(item=>item[key]!==undefined&&typeof item[key]=='string'&&item[key].toLowerCase().startsWith(value[1].toLowerCase())); | ||
break; | ||
case 'ends': | ||
case '$': | ||
obj = obj.filter(item=>item[key]!==undefined&&typeof item[key]=='string'&&item[key].toLowerCase().endsWith(value[1].toLowerCase())); | ||
break; | ||
case 'contains': | ||
case '*': | ||
obj = obj.filter(item=>item[key]!==undefined&&typeof item[key]=='string'&&~item[key].toLowerCase().indexOf(value[1].toLowerCase())); | ||
break; | ||
default: | ||
default: | ||
} | ||
} else | ||
obj = obj.filter(item=>typeof item[key]!='undefined'&&item[key]==value); | ||
} | ||
} else | ||
obj = obj.filter(item=>typeof item[key]!='undefined'&&item[key]==value); | ||
}); | ||
}); | ||
@@ -64,0 +68,0 @@ return obj; |
{ | ||
"name": "gitrows", | ||
"version": "0.7.17", | ||
"version": "0.8.0", | ||
"description": "Use git repos as CRUD data storage", | ||
@@ -5,0 +5,0 @@ "main": "gitrows.js", |
@@ -441,2 +441,12 @@ [![@latest](https://img.shields.io/npm/v/gitrows.svg)](https://www.npmjs.com/package/gitrows) | ||
```js | ||
gitrows.get(path,{'some_numerical_field':'gt:10'}); | ||
``` | ||
You can also supply an array of expressions per field name. All expressions will be handled as logical `AND`. This is especially useful for selecting ranges: | ||
```js | ||
gitrows.get(path,{'some_numerical_field':['gt:10','lt:20']}); | ||
``` | ||
## Aggregate Functions | ||
@@ -443,0 +453,0 @@ |
Sorry, the diff of this file is too big to display
231726
1085
500