@@ -1078,6 +1078,9 @@ function DSHttpAdapterProvider() {
10781078 } ,
10791079 deserialize : function ( data ) {
10801080 return data . data ;
1081+ } ,
1082+ queryTransform : function ( query ) {
1083+ return query ;
10811084 }
10821085 } ;
10831086
@@ -1292,6 +1295,9 @@ function DSHttpAdapterProvider() {
12921295 function findAll ( resourceConfig , params , options ) {
12931296 options = options || { } ;
12941297 options . params = options . params || { } ;
1298+ if ( options . params . query ) {
1299+ options . params . query = defaults . queryTransform ( options . params . query ) ;
1300+ }
12951301 DSUtils . deepMixIn ( options , params ) ;
12961302 return this . GET (
12971303 DSUtils . makePath ( resourceConfig . baseUrl , resourceConfig . endpoint ) ,
@@ -2227,7 +2233,8 @@ function save(resourceName, id, options) {
22272233module . exports = save ;
22282234
22292235} , { } ] , 36 :[ function ( require , module , exports ) {
2230- var errorPrefix = 'DSProvider.registerAdapter(name, adapter): ' ;
2236+ var errorPrefix = 'DSProvider.registerAdapter(name, adapter): ' ,
2237+ utils = require ( '../utils' ) [ 0 ] ( ) ;
22312238
22322239function lifecycleNoop ( resourceName , attrs , cb ) {
22332240 cb ( null , attrs ) ;
@@ -2238,6 +2245,34 @@ function BaseConfig() {
22382245
22392246BaseConfig . prototype . idAttribute = 'id' ;
22402247BaseConfig . prototype . defaultAdapter = 'DSHttpAdapter' ;
2248+ BaseConfig . prototype . filter = function ( resourceName , where , attrs ) {
2249+ var keep = true ;
2250+ utils . forOwn ( where , function ( clause , field ) {
2251+ if ( utils . isString ( clause ) ) {
2252+ clause = {
2253+ '===' : clause
2254+ } ;
2255+ }
2256+ if ( '==' in clause ) {
2257+ keep = keep && ( attrs [ field ] == clause [ '==' ] ) ;
2258+ } else if ( '===' in clause ) {
2259+ keep = keep && ( attrs [ field ] === clause [ '===' ] ) ;
2260+ } else if ( '!=' in clause ) {
2261+ keep = keep && ( attrs [ field ] != clause [ '!=' ] ) ;
2262+ } else if ( '>' in clause ) {
2263+ keep = keep && ( attrs [ field ] > clause [ '>' ] ) ;
2264+ } else if ( '>=' in clause ) {
2265+ keep = keep && ( attrs [ field ] >= clause [ '>=' ] ) ;
2266+ } else if ( '<' in clause ) {
2267+ keep = keep && ( attrs [ field ] < clause [ '<' ] ) ;
2268+ } else if ( '<=' in clause ) {
2269+ keep = keep && ( attrs [ field ] <= clause [ '<=' ] ) ;
2270+ } else if ( 'in' in clause ) {
2271+ keep = keep && utils . contains ( clause [ 'in' ] , attrs [ field ] ) ;
2272+ }
2273+ } ) ;
2274+ return keep ;
2275+ } ;
22412276BaseConfig . prototype . baseUrl = '' ;
22422277BaseConfig . prototype . endpoint = '' ;
22432278BaseConfig . prototype . beforeValidate = lifecycleNoop ;
@@ -2314,7 +2349,7 @@ function DSProvider() {
23142349
23152350module . exports = DSProvider ;
23162351
2317- } , { "./async_methods" :33 , "./sync_methods" :44 } ] , 37 :[ function ( require , module , exports ) {
2352+ } , { "../utils" : "uE/lJt" , ". /async_methods" :33 , "./sync_methods" :44 } ] , 37 :[ function ( require , module , exports ) {
23182353var errorPrefix = 'DS.changes(resourceName, id): ' ;
23192354
23202355/**
@@ -2673,7 +2708,8 @@ function filter(resourceName, params, options) {
26732708 }
26742709
26752710 try {
2676- var resource = this . store [ resourceName ] ,
2711+ var definition = this . definitions [ resourceName ] ,
2712+ resource = this . store [ resourceName ] ,
26772713 _this = this ;
26782714
26792715 // Protect against null
@@ -2691,38 +2727,16 @@ function filter(resourceName, params, options) {
26912727 }
26922728
26932729 // The query has been completed, so hit the cache with the query
2694- var filtered = this . utils . filter ( resource . collection , function ( value ) {
2695- var keep = true ;
2730+ var filtered = this . utils . filter ( resource . collection , function ( attrs ) {
2731+ var keep = true ,
2732+ where = params . query . where ;
26962733
26972734 // Apply 'where' clauses
2698- if ( params . query . where ) {
2699- if ( ! _this . utils . isObject ( params . query . where ) ) {
2735+ if ( where ) {
2736+ if ( ! _this . utils . isObject ( where ) ) {
27002737 throw new _this . errors . IllegalArgumentError ( errorPrefix + 'params.query.where: Must be an object!' , { params : { query : { where : { actual : typeof params . query . where , expected : 'object' } } } } ) ;
27012738 }
2702- _this . utils . forOwn ( params . query . where , function ( value2 , key2 ) {
2703- if ( _this . utils . isString ( value2 ) ) {
2704- value2 = {
2705- '===' : value2
2706- } ;
2707- }
2708- if ( '==' in value2 ) {
2709- keep = keep && ( value [ key2 ] == value2 [ '==' ] ) ;
2710- } else if ( '===' in value2 ) {
2711- keep = keep && ( value [ key2 ] === value2 [ '===' ] ) ;
2712- } else if ( '!=' in value2 ) {
2713- keep = keep && ( value [ key2 ] != value2 [ '!=' ] ) ;
2714- } else if ( '>' in value2 ) {
2715- keep = keep && ( value [ key2 ] > value2 [ '>' ] ) ;
2716- } else if ( '>=' in value2 ) {
2717- keep = keep && ( value [ key2 ] >= value2 [ '>=' ] ) ;
2718- } else if ( '<' in value2 ) {
2719- keep = keep && ( value [ key2 ] < value2 [ '<' ] ) ;
2720- } else if ( '<=' in value2 ) {
2721- keep = keep && ( value [ key2 ] <= value2 [ '<=' ] ) ;
2722- } else if ( 'in' in value2 ) {
2723- keep = keep && _this . utils . contains ( value2 [ 'in' ] , value [ key2 ] ) ;
2724- }
2725- } ) ;
2739+ keep = definition . filter ( resourceName , where , attrs ) ;
27262740 }
27272741 return keep ;
27282742 } ) ;
0 commit comments