@@ -5,6 +5,7 @@ var deepMixIn = require('mout/object/deepMixIn');
5
5
var forEach = require ( 'mout/array/forEach' ) ;
6
6
var contains = require ( 'mout/array/contains' ) ;
7
7
var isObject = require ( 'mout/lang/isObject' ) ;
8
+ var isEmpty = require ( 'mout/lang/isEmpty' ) ;
8
9
var isString = require ( 'mout/lang/isString' ) ;
9
10
var upperCase = require ( 'mout/string/upperCase' ) ;
10
11
var underscore = require ( 'mout/string/underscore' ) ;
@@ -53,53 +54,54 @@ function filterQuery(resourceConfig, params, options) {
53
54
} ) ;
54
55
55
56
var query = r . db ( options . db || this . defaults . db ) . table ( resourceConfig . table || underscore ( resourceConfig . name ) ) ;
56
- var subQuery ;
57
57
58
- forOwn ( params . where , function ( criteria , field ) {
59
- if ( ! isObject ( criteria ) ) {
60
- params . where [ field ] = {
61
- '==' : criteria
62
- } ;
63
- }
64
- forOwn ( criteria , function ( v , op ) {
65
- if ( op === '==' || op === '===' ) {
66
- subQuery = subQuery ? subQuery . and ( r . row ( field ) . default ( null ) . eq ( v ) ) : r . row ( field ) . default ( null ) . eq ( v ) ;
67
- } else if ( op === '!=' || op === '!==' ) {
68
- subQuery = subQuery ? subQuery . and ( r . row ( field ) . default ( null ) . ne ( v ) ) : r . row ( field ) . default ( null ) . ne ( v ) ;
69
- } else if ( op === '>' ) {
70
- subQuery = subQuery ? subQuery . and ( r . row ( field ) . default ( null ) . gt ( v ) ) : r . row ( field ) . default ( null ) . gt ( v ) ;
71
- } else if ( op === '>=' ) {
72
- subQuery = subQuery ? subQuery . and ( r . row ( field ) . default ( null ) . ge ( v ) ) : r . row ( field ) . default ( null ) . ge ( v ) ;
73
- } else if ( op === '<' ) {
74
- subQuery = subQuery ? subQuery . and ( r . row ( field ) . default ( null ) . lt ( v ) ) : r . row ( field ) . default ( null ) . lt ( v ) ;
75
- } else if ( op === '<=' ) {
76
- subQuery = subQuery ? subQuery . and ( r . row ( field ) . default ( null ) . le ( v ) ) : r . row ( field ) . default ( null ) . le ( v ) ;
77
- } else if ( op === 'in' ) {
78
- subQuery = subQuery ? subQuery . and ( r . expr ( v ) . default ( r . expr ( [ ] ) ) . contains ( r . row ( field ) . default ( null ) ) ) : r . expr ( v ) . default ( r . expr ( [ ] ) ) . contains ( r . row ( field ) . default ( null ) ) ;
79
- } else if ( op === 'notIn' ) {
80
- subQuery = subQuery ? subQuery . and ( r . expr ( v ) . default ( r . expr ( [ ] ) ) . contains ( r . row ( field ) . default ( null ) ) . not ( ) ) : r . expr ( v ) . default ( r . expr ( [ ] ) ) . contains ( r . row ( field ) . default ( null ) ) . not ( ) ;
81
- } else if ( op === '|==' || op === '|===' ) {
82
- subQuery = subQuery ? subQuery . or ( r . row ( field ) . default ( null ) . eq ( v ) ) : r . row ( field ) . default ( null ) . eq ( v ) ;
83
- } else if ( op === '|!=' || op === '|!==' ) {
84
- subQuery = subQuery ? subQuery . or ( r . row ( field ) . default ( null ) . ne ( v ) ) : r . row ( field ) . default ( null ) . ne ( v ) ;
85
- } else if ( op === '|>' ) {
86
- subQuery = subQuery ? subQuery . or ( r . row ( field ) . default ( null ) . gt ( v ) ) : r . row ( field ) . default ( null ) . gt ( v ) ;
87
- } else if ( op === '|>=' ) {
88
- subQuery = subQuery ? subQuery . or ( r . row ( field ) . default ( null ) . ge ( v ) ) : r . row ( field ) . default ( null ) . ge ( v ) ;
89
- } else if ( op === '|<' ) {
90
- subQuery = subQuery ? subQuery . or ( r . row ( field ) . default ( null ) . lt ( v ) ) : r . row ( field ) . default ( null ) . lt ( v ) ;
91
- } else if ( op === '|<=' ) {
92
- subQuery = subQuery ? subQuery . or ( r . row ( field ) . default ( null ) . le ( v ) ) : r . row ( field ) . default ( null ) . le ( v ) ;
93
- } else if ( op === '|in' ) {
94
- subQuery = subQuery ? subQuery . or ( r . expr ( v ) . default ( r . expr ( [ ] ) ) . contains ( r . row ( field ) . default ( null ) ) ) : r . expr ( v ) . default ( r . expr ( [ ] ) ) . contains ( r . row ( field ) . default ( null ) ) ;
95
- } else if ( op === '|notIn' ) {
96
- subQuery = subQuery ? subQuery . or ( r . expr ( v ) . default ( r . expr ( [ ] ) ) . contains ( r . row ( field ) . default ( null ) ) . not ( ) ) : r . expr ( v ) . default ( r . expr ( [ ] ) ) . contains ( r . row ( field ) . default ( null ) ) . not ( ) ;
97
- }
58
+ if ( ! isEmpty ( params . where ) ) {
59
+ query = query . filter ( function ( row ) {
60
+ var subQuery ;
61
+ forOwn ( params . where , function ( criteria , field ) {
62
+ if ( ! isObject ( criteria ) ) {
63
+ params . where [ field ] = {
64
+ '==' : criteria
65
+ } ;
66
+ }
67
+ forOwn ( criteria , function ( v , op ) {
68
+ if ( op === '==' || op === '===' ) {
69
+ subQuery = subQuery ? subQuery . and ( row ( field ) . default ( null ) . eq ( v ) ) : row ( field ) . default ( null ) . eq ( v ) ;
70
+ } else if ( op === '!=' || op === '!==' ) {
71
+ subQuery = subQuery ? subQuery . and ( row ( field ) . default ( null ) . ne ( v ) ) : row ( field ) . default ( null ) . ne ( v ) ;
72
+ } else if ( op === '>' ) {
73
+ subQuery = subQuery ? subQuery . and ( row ( field ) . default ( null ) . gt ( v ) ) : row ( field ) . default ( null ) . gt ( v ) ;
74
+ } else if ( op === '>=' ) {
75
+ subQuery = subQuery ? subQuery . and ( row ( field ) . default ( null ) . ge ( v ) ) : row ( field ) . default ( null ) . ge ( v ) ;
76
+ } else if ( op === '<' ) {
77
+ subQuery = subQuery ? subQuery . and ( row ( field ) . default ( null ) . lt ( v ) ) : row ( field ) . default ( null ) . lt ( v ) ;
78
+ } else if ( op === '<=' ) {
79
+ subQuery = subQuery ? subQuery . and ( row ( field ) . default ( null ) . le ( v ) ) : row ( field ) . default ( null ) . le ( v ) ;
80
+ } else if ( op === 'in' ) {
81
+ subQuery = subQuery ? subQuery . and ( r . expr ( v ) . default ( r . expr ( [ ] ) ) . contains ( row ( field ) . default ( null ) ) ) : r . expr ( v ) . default ( r . expr ( [ ] ) ) . contains ( row ( field ) . default ( null ) ) ;
82
+ } else if ( op === 'notIn' ) {
83
+ subQuery = subQuery ? subQuery . and ( r . expr ( v ) . default ( r . expr ( [ ] ) ) . contains ( row ( field ) . default ( null ) ) . not ( ) ) : r . expr ( v ) . default ( r . expr ( [ ] ) ) . contains ( row ( field ) . default ( null ) ) . not ( ) ;
84
+ } else if ( op === '|==' || op === '|===' ) {
85
+ subQuery = subQuery ? subQuery . or ( row ( field ) . default ( null ) . eq ( v ) ) : row ( field ) . default ( null ) . eq ( v ) ;
86
+ } else if ( op === '|!=' || op === '|!==' ) {
87
+ subQuery = subQuery ? subQuery . or ( row ( field ) . default ( null ) . ne ( v ) ) : row ( field ) . default ( null ) . ne ( v ) ;
88
+ } else if ( op === '|>' ) {
89
+ subQuery = subQuery ? subQuery . or ( row ( field ) . default ( null ) . gt ( v ) ) : row ( field ) . default ( null ) . gt ( v ) ;
90
+ } else if ( op === '|>=' ) {
91
+ subQuery = subQuery ? subQuery . or ( row ( field ) . default ( null ) . ge ( v ) ) : row ( field ) . default ( null ) . ge ( v ) ;
92
+ } else if ( op === '|<' ) {
93
+ subQuery = subQuery ? subQuery . or ( row ( field ) . default ( null ) . lt ( v ) ) : row ( field ) . default ( null ) . lt ( v ) ;
94
+ } else if ( op === '|<=' ) {
95
+ subQuery = subQuery ? subQuery . or ( row ( field ) . default ( null ) . le ( v ) ) : row ( field ) . default ( null ) . le ( v ) ;
96
+ } else if ( op === '|in' ) {
97
+ subQuery = subQuery ? subQuery . or ( r . expr ( v ) . default ( r . expr ( [ ] ) ) . contains ( row ( field ) . default ( null ) ) ) : r . expr ( v ) . default ( r . expr ( [ ] ) ) . contains ( row ( field ) . default ( null ) ) ;
98
+ } else if ( op === '|notIn' ) {
99
+ subQuery = subQuery ? subQuery . or ( r . expr ( v ) . default ( r . expr ( [ ] ) ) . contains ( row ( field ) . default ( null ) ) . not ( ) ) : r . expr ( v ) . default ( r . expr ( [ ] ) ) . contains ( row ( field ) . default ( null ) ) . not ( ) ;
100
+ }
101
+ } ) ;
102
+ } ) ;
103
+ return subQuery ;
98
104
} ) ;
99
- } ) ;
100
-
101
- if ( subQuery ) {
102
- query = query . filter ( subQuery ) ;
103
105
}
104
106
105
107
if ( params . orderBy ) {
0 commit comments