Skip to content

Commit 2402af7

Browse files
committed
Merge pull request #9 from Natsuke/operator-handler
Throw error when using bad WHERE operator
2 parents 70e4f36 + 8338580 commit 2402af7

File tree

3 files changed

+29
-123
lines changed

3 files changed

+29
-123
lines changed

dist/js-data-sql.js

+12-122
Original file line numberDiff line numberDiff line change
@@ -59,15 +59,15 @@ module.exports =
5959

6060
var keys = _interopRequire(__webpack_require__(4));
6161

62-
var omit = _interopRequire(__webpack_require__(9));
62+
var omit = _interopRequire(__webpack_require__(5));
6363

64-
var isEmpty = _interopRequire(__webpack_require__(5));
64+
var isEmpty = _interopRequire(__webpack_require__(6));
6565

66-
var upperCase = _interopRequire(__webpack_require__(6));
66+
var upperCase = _interopRequire(__webpack_require__(7));
6767

68-
var underscore = _interopRequire(__webpack_require__(7));
68+
var underscore = _interopRequire(__webpack_require__(8));
6969

70-
var toString = _interopRequire(__webpack_require__(8));
70+
var toString = _interopRequire(__webpack_require__(9));
7171

7272
var DSUtils = JSData.DSUtils;
7373
var P = DSUtils.Promise;
@@ -150,6 +150,8 @@ module.exports =
150150
query = query.orWhere(field, "in", v);
151151
} else if (op === "|notIn") {
152152
query = query.orWhereNotIn(field, v);
153+
} else {
154+
throw new Error("Operator not found");
153155
}
154156
});
155157
});
@@ -356,143 +358,31 @@ module.exports =
356358
/* 5 */
357359
/***/ function(module, exports, __webpack_require__) {
358360

359-
module.exports = require("mout/lang/isEmpty");
361+
module.exports = require("mout/object/omit");
360362

361363
/***/ },
362364
/* 6 */
363365
/***/ function(module, exports, __webpack_require__) {
364366

365-
module.exports = require("mout/string/upperCase");
367+
module.exports = require("mout/lang/isEmpty");
366368

367369
/***/ },
368370
/* 7 */
369371
/***/ function(module, exports, __webpack_require__) {
370372

371-
module.exports = require("mout/string/underscore");
373+
module.exports = require("mout/string/upperCase");
372374

373375
/***/ },
374376
/* 8 */
375377
/***/ function(module, exports, __webpack_require__) {
376378

377-
module.exports = require("mout/lang/toString");
379+
module.exports = require("mout/string/underscore");
378380

379381
/***/ },
380382
/* 9 */
381383
/***/ function(module, exports, __webpack_require__) {
382384

383-
var slice = __webpack_require__(10);
384-
var contains = __webpack_require__(11);
385-
386-
/**
387-
* Return a copy of the object, filtered to only contain properties except the blacklisted keys.
388-
*/
389-
function omit(obj, var_keys){
390-
var keys = typeof arguments[1] !== 'string'? arguments[1] : slice(arguments, 1),
391-
out = {};
392-
393-
for (var property in obj) {
394-
if (obj.hasOwnProperty(property) && !contains(keys, property)) {
395-
out[property] = obj[property];
396-
}
397-
}
398-
return out;
399-
}
400-
401-
module.exports = omit;
402-
403-
404-
405-
406-
/***/ },
407-
/* 10 */
408-
/***/ function(module, exports, __webpack_require__) {
409-
410-
411-
412-
/**
413-
* Create slice of source array or array-like object
414-
*/
415-
function slice(arr, start, end){
416-
var len = arr.length;
417-
418-
if (start == null) {
419-
start = 0;
420-
} else if (start < 0) {
421-
start = Math.max(len + start, 0);
422-
} else {
423-
start = Math.min(start, len);
424-
}
425-
426-
if (end == null) {
427-
end = len;
428-
} else if (end < 0) {
429-
end = Math.max(len + end, 0);
430-
} else {
431-
end = Math.min(end, len);
432-
}
433-
434-
var result = [];
435-
while (start < end) {
436-
result.push(arr[start++]);
437-
}
438-
439-
return result;
440-
}
441-
442-
module.exports = slice;
443-
444-
445-
446-
447-
/***/ },
448-
/* 11 */
449-
/***/ function(module, exports, __webpack_require__) {
450-
451-
var indexOf = __webpack_require__(12);
452-
453-
/**
454-
* If array contains values.
455-
*/
456-
function contains(arr, val) {
457-
return indexOf(arr, val) !== -1;
458-
}
459-
module.exports = contains;
460-
461-
462-
463-
/***/ },
464-
/* 12 */
465-
/***/ function(module, exports, __webpack_require__) {
466-
467-
468-
469-
/**
470-
* Array.indexOf
471-
*/
472-
function indexOf(arr, item, fromIndex) {
473-
fromIndex = fromIndex || 0;
474-
if (arr == null) {
475-
return -1;
476-
}
477-
478-
var len = arr.length,
479-
i = fromIndex < 0 ? len + fromIndex : fromIndex;
480-
while (i < len) {
481-
// we iterate over sparse items since there is no way to make it
482-
// work properly on IE 7-8. see #64
483-
if (arr[i] === item) {
484-
return i;
485-
}
486-
487-
i++;
488-
}
489-
490-
return -1;
491-
}
492-
493-
module.exports = indexOf;
494-
495-
385+
module.exports = require("mout/lang/toString");
496386

497387
/***/ }
498388
/******/ ]);

src/index.js

+2
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,8 @@ function filterQuery(resourceConfig, params) {
8888
query = query.orWhere(field, 'in', v);
8989
} else if (op === '|notIn') {
9090
query = query.orWhereNotIn(field, v);
91+
} else {
92+
throw new Error('Operator not found');
9193
}
9294
});
9395
});

test/findAll.spec.js

+15-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ describe('DSSqlAdapter#findAll', function () {
2323
it('should filter users using the "in" operator', function () {
2424
var id;
2525

26-
adapter.findAll(User, {
26+
return adapter.findAll(User, {
2727
where: {
2828
age: {
2929
'in': [30]
@@ -45,4 +45,18 @@ describe('DSSqlAdapter#findAll', function () {
4545
assert.isFalse(!!destroyedUser);
4646
});
4747
});
48+
it('should throw "Operator not found" error', function () {
49+
var op = '>=<';
50+
51+
assert.throw(function () {
52+
return adapter.findAll(User, {
53+
where: {
54+
name: {
55+
op: 'John'
56+
}
57+
}
58+
});
59+
}
60+
, Error, 'Operator not found');
61+
});
4862
});

0 commit comments

Comments
 (0)