simple-query-parser
Advanced tools
+4
-0
| # Simple query parse | ||
| ## V1.1.2 | ||
| - Handle multiple times the same parameters in query | ||
| ## v1.1.1 | ||
@@ -4,0 +8,0 @@ |
+28
-24
@@ -29,33 +29,37 @@ const comparatorObject = { | ||
| let key = Object.keys(queryParams)[i].toString() | ||
| let value = queryParams[key].toString() | ||
| let searched = { | ||
| key: key, | ||
| value: null, | ||
| comparator: '=' | ||
| } | ||
| let values = (Array.isArray(queryParams[key]) === true) ? queryParams[key] : [queryParams[key]] | ||
| if (!this.containsNumberOrLetter(key)) { | ||
| continue | ||
| } | ||
| for (let j = 0; j < values.length; j++) { | ||
| let value = values[j] | ||
| let searched = { | ||
| key: key, | ||
| value: null, | ||
| comparator: '=' | ||
| } | ||
| if (value.includes(':')) { | ||
| let splittedValue = value.split(':') | ||
| if (!this.containsNumberOrLetter(key)) { | ||
| continue | ||
| } | ||
| if (comparatorObject[splittedValue[0]] !== undefined) { | ||
| searched.comparator = comparatorObject[splittedValue[0]] | ||
| if (value.includes(':')) { | ||
| let splittedValue = value.split(':') | ||
| searched.value = (comparatorObject[splittedValue[0]] !== 'LIKE') ? this.parseToIntIfNumber(splittedValue[1]) : `%${splittedValue[1]}%` | ||
| if (comparatorObject[splittedValue[0]] !== undefined) { | ||
| searched.comparator = comparatorObject[splittedValue[0]] | ||
| searched.value = (comparatorObject[splittedValue[0]] !== 'LIKE') ? this.parseToIntIfNumber(splittedValue[1]) : `%${splittedValue[1]}%` | ||
| } | ||
| } else if (value.includes(',')) { | ||
| let splittedValue = value.split(',') | ||
| searched.value = [] | ||
| for (let k = 0; k < splittedValue.length; k++) { | ||
| searched.value.push(this.parseToIntIfNumber(splittedValue[k])) | ||
| } | ||
| } else { | ||
| searched.value = this.parseToIntIfNumber(value) | ||
| } | ||
| } else if (value.includes(',')) { | ||
| let splittedValue = value.split(',') | ||
| searched.value = [] | ||
| for (let i = 0; i < splittedValue.length; i++) { | ||
| searched.value.push(this.parseToIntIfNumber(splittedValue[i])) | ||
| } | ||
| } else { | ||
| searched.value = this.parseToIntIfNumber(value) | ||
| paramsArray.push(searched) | ||
| } | ||
| paramsArray.push(searched) | ||
| } | ||
@@ -62,0 +66,0 @@ |
+2
-2
| { | ||
| "name": "simple-query-parser", | ||
| "version": "1.1.1", | ||
| "version": "1.1.2", | ||
| "description": "Simple query parser", | ||
@@ -25,4 +25,4 @@ "main": "index.js", | ||
| "devDependencies": { | ||
| "mocha": "^7.0.1" | ||
| "mocha": "7.0.1" | ||
| } | ||
| } |
+19
-0
@@ -44,2 +44,21 @@ const assert = require('assert') | ||
| it('should convert an object with arrays query with comparators to array', () => { | ||
| let obj = { price: ['gt:23', 'lt:30'], orderBy: 'df:recent' } | ||
| let result = queryParser.parse(obj) | ||
| assert.deepStrictEqual(result, [{ | ||
| key: 'price', | ||
| value: 23, | ||
| comparator: '>' | ||
| }, { | ||
| key: 'price', | ||
| value: 30, | ||
| comparator: '<' | ||
| }, { | ||
| key: 'orderBy', | ||
| value: 'recent', | ||
| comparator: '!=' | ||
| }]) | ||
| }) | ||
| it('should ignore keys which contains special caracters', () => { | ||
@@ -46,0 +65,0 @@ let obj = { 'pri;ce': 'gt:23', 'order By': 'df:recent', page: 'lte:20' } |
12920
6.05%291
7.38%