Skip to content

Commit abf4c1c

Browse files
authored
Merge pull request #10 from canjs/index
Provide a default hydrator for basicquery
2 parents a992329 + a44c541 commit abf4c1c

File tree

4 files changed

+33
-10
lines changed

4 files changed

+33
-10
lines changed

src/helpers.js

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,13 @@ var helpers = {
8989

9090
return 0;
9191
};
92-
}
92+
},
93+
valueHydrator: function(value){
94+
if(canReflect.isBuiltIn(value)) {
95+
return value;
96+
} else {
97+
throw new Error("can-query-logic doesn't support comparison operator: "+JSON.stringify(value));
98+
}
99+
}
93100
};
94101
module.exports = helpers;

src/serializers/basic-query-test.js

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,25 @@ QUnit.test("gt and lt", function(){
209209

210210
});
211211

212+
QUnit.test("basicquery with no sort", function() {
213+
var query = {};
214+
215+
var converter = makeBasicQueryConvert({
216+
identity: ["id"],
217+
type: "map",
218+
keys: {
219+
id: function(val) { return val; }
220+
}
221+
});
222+
var basicQuery = converter.hydrate(query);
223+
224+
var objs = [{id: 0}, {id: 2}]
225+
var item = {id: 1};
226+
227+
var res = basicQuery.index(item, objs);
228+
QUnit.equal(res, 1, "inserted at 1");
229+
});
230+
212231
/*
213232
QUnit.skip("nested properties within ors", function(){
214233
var query = {

src/serializers/basic-query.js

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ var is = require("../types/comparisons");
88
var makeMaybe = require("../types/make-maybe");
99
var makeEnum = require("../types/make-enum");
1010
var logDev = require("can-log/dev/dev");
11+
var helpers = require("../helpers");
1112

1213
var setTypeSymbol = canSymbol.for("can.SetType");
1314
var schemaSymbol = canSymbol.for("can.getSchema");
@@ -292,13 +293,7 @@ module.exports = function(schema) {
292293
var filter = canReflect.serialize(data.filter);
293294

294295
// this mutates
295-
var filterAnd = hydrateFilter(filter, keys, function(value){
296-
if(canReflect.isBuiltIn(value)) {
297-
return value;
298-
} else {
299-
throw new Error("can-query-logic doesn't support comparison operator: "+JSON.stringify(value));
300-
}
301-
});
296+
var filterAnd = hydrateFilter(filter, keys, helpers.valueHydrator);
302297

303298
// Conver the filter arguments
304299

src/types/basic-query.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,13 @@ function makeSort(schemaKeys, hydrateAndValue){
2626
sorters[key] = {
2727
// valueA is GT valueB
2828
$gt: function(valueA, valueB) {
29-
var $gt = hydrateAndValue({$gt: valueB}, key, schemaProp);
29+
var $gt = hydrateAndValue({$gt: valueB}, key, schemaProp,
30+
helpers.valueHydrator);
3031
return $gt[isMemberSymbol](valueA);
3132
},
3233
$lt: function( valueA, valueB ){
33-
var $lt = hydrateAndValue({$lt: valueB}, key, schemaProp);
34+
var $lt = hydrateAndValue({$lt: valueB}, key, schemaProp,
35+
helpers.valueHydrator);
3436
return $lt[isMemberSymbol](valueA);
3537
}
3638
};

0 commit comments

Comments
 (0)