@@ -3,43 +3,43 @@ var Serializer = require("../serializer");
3
3
var canReflect = require ( "can-reflect" ) ;
4
4
5
5
function makeNew ( Constructor ) {
6
- return function ( value ) {
7
- return new Constructor ( value ) ;
8
- } ;
6
+ return function ( value ) {
7
+ return new Constructor ( value ) ;
8
+ } ;
9
9
}
10
10
var hydrateMap = { } ;
11
11
function addHydrateFrom ( key , hydrate ) {
12
- hydrateMap [ key ] = function ( value , unknownHydrator ) {
13
- return hydrate ( unknownHydrator ? unknownHydrator ( value [ key ] ) : value [ key ] ) ;
14
- } ;
15
- Object . defineProperty ( hydrateMap [ key ] , "name" , {
12
+ hydrateMap [ key ] = function ( value , unknownHydrator ) {
13
+ return hydrate ( unknownHydrator ? unknownHydrator ( value [ key ] ) : value [ key ] ) ;
14
+ } ;
15
+ Object . defineProperty ( hydrateMap [ key ] , "name" , {
16
16
value : "hydrate " + key ,
17
17
writable : true
18
18
} ) ;
19
19
}
20
20
21
21
function addHydrateFromValues ( key , hydrate ) {
22
- hydrateMap [ key ] = function ( value , unknownHydrator ) {
23
- var clones = value [ key ] ;
24
- if ( unknownHydrator ) {
25
- clones = clones . map ( function ( value ) {
26
- return unknownHydrator ( value ) ;
27
- } ) ;
28
- }
29
- return hydrate ( clones ) ;
30
- } ;
31
- Object . defineProperty ( hydrateMap [ key ] , "name" , {
22
+ hydrateMap [ key ] = function ( value , unknownHydrator ) {
23
+ var clones = value [ key ] ;
24
+ if ( unknownHydrator ) {
25
+ clones = clones . map ( function ( value ) {
26
+ return unknownHydrator ( value ) ;
27
+ } ) ;
28
+ }
29
+ return hydrate ( clones ) ;
30
+ } ;
31
+ Object . defineProperty ( hydrateMap [ key ] , "name" , {
32
32
value : "hydrate " + key ,
33
33
writable : true
34
34
} ) ;
35
35
}
36
36
37
37
// https://docs.mongodb.com/manual/reference/operator/query-comparison/
38
38
addHydrateFrom ( "$eq" , function ( value ) {
39
- return new is . In ( [ value ] ) ;
39
+ return new is . In ( [ value ] ) ;
40
40
} ) ;
41
41
addHydrateFrom ( "$ne" , function ( value ) {
42
- return new is . NotIn ( [ value ] ) ;
42
+ return new is . NotIn ( [ value ] ) ;
43
43
} ) ;
44
44
45
45
addHydrateFrom ( "$gt" , makeNew ( is . GreaterThan ) ) ;
@@ -54,68 +54,70 @@ addHydrateFromValues("$nin", makeNew(is.GreaterThan));
54
54
55
55
56
56
var serializer = new Serializer ( [
57
- [ is . In , function ( isIn , serialize ) {
58
- return isIn . values . length === 1 ?
59
- serialize ( isIn . values [ 0 ] ) :
60
- { $in : isIn . values . map ( serialize ) } ;
61
- } ] ,
62
- [ is . NotIn , function ( notIn , serialize ) {
63
- return notIn . values . length === 1 ?
64
- { $ne : serialize ( notIn . values [ 0 ] ) } : { $nin : notIn . values . map ( serialize ) } ;
65
- } ] ,
66
- [ is . GreaterThan , function ( gt , serialize ) { return { $gt : serialize ( gt . value ) } ; } ] ,
67
- [ is . GreaterThanEqual , function ( gte , serialize ) { return { $gte : serialize ( gte . value ) } ; } ] ,
68
- [ is . LessThan , function ( lt , serialize ) { return { $lt : serialize ( lt . value ) } ; } ] ,
69
- [ is . LessThanEqual , function ( lt , serialize ) { return { $lte : serialize ( lt . value ) } ; } ] ,
70
- [ is . And , function ( and , serialize ) {
71
- var obj = { } ;
72
- and . values . forEach ( function ( clause ) {
73
- canReflect . assignMap ( obj , serialize ( clause ) ) ;
74
- } ) ;
75
- return obj ;
76
- } ]
77
- /*[is.Or, function(or, serialize){
78
- return {
79
- $or: or.values.map(function(value){
80
- return serialize(value, serialize);
81
- })
82
- };
83
- }]*/
57
+ [ is . In , function ( isIn , serialize ) {
58
+ return isIn . values . length === 1 ?
59
+ serialize ( isIn . values [ 0 ] ) :
60
+ { $in : isIn . values . map ( serialize ) } ;
61
+ } ] ,
62
+ [ is . NotIn , function ( notIn , serialize ) {
63
+ return notIn . values . length === 1 ?
64
+ { $ne : serialize ( notIn . values [ 0 ] ) } : { $nin : notIn . values . map ( serialize ) } ;
65
+ } ] ,
66
+ [ is . GreaterThan , function ( gt , serialize ) { return { $gt : serialize ( gt . value ) } ; } ] ,
67
+ [ is . GreaterThanEqual , function ( gte , serialize ) { return { $gte : serialize ( gte . value ) } ; } ] ,
68
+ [ is . LessThan , function ( lt , serialize ) { return { $lt : serialize ( lt . value ) } ; } ] ,
69
+ [ is . LessThanEqual , function ( lt , serialize ) { return { $lte : serialize ( lt . value ) } ; } ] ,
70
+ [ is . And , function ( and , serialize ) {
71
+ var obj = { } ;
72
+ and . values . forEach ( function ( clause ) {
73
+ canReflect . assignMap ( obj , serialize ( clause ) ) ;
74
+ } ) ;
75
+ return obj ;
76
+ } ]
77
+ /*[is.Or, function(or, serialize){
78
+ return {
79
+ $or: or.values.map(function(value){
80
+ return serialize(value, serialize);
81
+ })
82
+ };
83
+ }]*/
84
84
] ) ;
85
85
86
86
module . exports = {
87
- hydrate : function ( value , hydrateUnknown ) {
88
- if ( ! hydrateUnknown ) {
89
- hydrateUnknown = function ( ) {
90
- throw new Error ( "can-query-logic doesn't recognize operator: " + JSON . stringify ( value ) ) ;
91
- }
92
- }
93
- if ( Array . isArray ( value ) ) {
94
- return new is . In ( value ) ;
95
- }
96
- else if ( value && typeof value === "object" ) {
97
- var keys = Object . keys ( value ) ;
98
- var allKeysAreComparisons = keys . every ( function ( key ) {
99
- return hydrateMap [ key ]
100
- } )
101
- if ( allKeysAreComparisons ) {
102
- var andClauses = keys . map ( function ( key ) {
103
- var part = { } ;
104
- part [ key ] = value [ key ] ;
105
- var hydrator = hydrateMap [ key ] ;
106
- return hydrator ( part , hydrateUnknown ) ;
107
- } ) ;
108
- if ( andClauses . length > 1 ) {
109
- return new is . And ( andClauses ) ;
110
- } else {
111
- return andClauses [ 0 ] ;
112
- }
113
- } else {
114
- return hydrateUnknown ( value ) ;
115
- }
116
- } else {
117
- return new is . In ( [ value ] ) ;
118
- }
119
- } ,
120
- serializer : serializer
87
+ hydrate : function ( value , hydrateUnknown ) {
88
+ if ( ! hydrateUnknown ) {
89
+ hydrateUnknown = function ( ) {
90
+ throw new Error ( "can-query-logic doesn't recognize operator: " + JSON . stringify ( value ) ) ;
91
+ }
92
+ }
93
+ if ( Array . isArray ( value ) ) {
94
+ return new is . In ( value . map ( function ( value ) {
95
+ return hydrateUnknown ( value ) ;
96
+ } ) ) ;
97
+ }
98
+ else if ( value && typeof value === "object" ) {
99
+ var keys = Object . keys ( value ) ;
100
+ var allKeysAreComparisons = keys . every ( function ( key ) {
101
+ return hydrateMap [ key ]
102
+ } ) ;
103
+ if ( allKeysAreComparisons ) {
104
+ var andClauses = keys . map ( function ( key ) {
105
+ var part = { } ;
106
+ part [ key ] = value [ key ] ;
107
+ var hydrator = hydrateMap [ key ] ;
108
+ return hydrator ( part , hydrateUnknown ) ;
109
+ } ) ;
110
+ if ( andClauses . length > 1 ) {
111
+ return new is . And ( andClauses ) ;
112
+ } else {
113
+ return andClauses [ 0 ] ;
114
+ }
115
+ } else {
116
+ return hydrateUnknown ( value ) ;
117
+ }
118
+ } else {
119
+ return new is . In ( [ hydrateUnknown ( value ) ] ) ;
120
+ }
121
+ } ,
122
+ serializer : serializer
121
123
} ;
0 commit comments