@@ -58,31 +58,6 @@ const filterArgConfig = {
58
58
age : {
59
59
type : GraphQLInt ,
60
60
} ,
61
- _operators : {
62
- type : new GraphQLInputObjectType ( {
63
- name : 'OperatorsFilterUserInput' ,
64
- fields : {
65
- id : {
66
- type : new GraphQLInputObjectType ( {
67
- name : 'IdOperatorsFilterUserInput' ,
68
- fields : {
69
- lt : { type : GraphQLInt } ,
70
- gt : { type : GraphQLInt } ,
71
- } ,
72
- } ) ,
73
- } ,
74
- age : {
75
- type : new GraphQLInputObjectType ( {
76
- name : 'AgeOperatorsFilterUserInput' ,
77
- fields : {
78
- lt : { type : GraphQLInt } ,
79
- gt : { type : GraphQLInt } ,
80
- } ,
81
- } ) ,
82
- } ,
83
- } ,
84
- } ) ,
85
- } ,
86
61
} ,
87
62
} ) ,
88
63
} ;
@@ -93,22 +68,20 @@ function filteredUserList(list, filter = {}) {
93
68
result = result . filter ( o => o . gender === filter . gender ) ;
94
69
}
95
70
96
- if ( filter . _operators ) {
97
- if ( filter . _operators . id ) {
98
- if ( filter . _operators . id . lt ) {
99
- result = result . filter ( o => o . id < filter . _operators . id . lt ) ;
100
- }
101
- if ( filter . _operators . id . gt ) {
102
- result = result . filter ( o => o . id > filter . _operators . id . gt ) ;
103
- }
71
+ if ( filter . id ) {
72
+ if ( filter . id . $lt ) {
73
+ result = result . filter ( o => o . id < filter . id . $lt ) ;
104
74
}
105
- if ( filter . _operators . age ) {
106
- if ( filter . _operators . age . lt ) {
107
- result = result . filter ( o => o . age < filter . _operators . age . lt ) ;
108
- }
109
- if ( filter . _operators . age . gt ) {
110
- result = result . filter ( o => o . age > filter . _operators . age . gt ) ;
111
- }
75
+ if ( filter . id . $gt ) {
76
+ result = result . filter ( o => o . id > filter . id . $gt ) ;
77
+ }
78
+ }
79
+ if ( filter . age ) {
80
+ if ( filter . age . $lt ) {
81
+ result = result . filter ( o => o . age < filter . age . $lt ) ;
82
+ }
83
+ if ( filter . age . $gt ) {
84
+ result = result . filter ( o => o . age > filter . age . $gt ) ;
112
85
}
113
86
}
114
87
@@ -133,6 +106,17 @@ function sortUserList(list, sortValue = {}) {
133
106
return list ;
134
107
}
135
108
109
+ function prepareFilterFromArgs ( resolveParams = { } ) {
110
+ const args = resolveParams . args || { } ;
111
+ const filter = Object . assign ( { } , args . filter ) ;
112
+ if ( resolveParams . rawQuery ) {
113
+ Object . keys ( resolveParams . rawQuery ) . forEach ( ( k ) => {
114
+ filter [ k ] = resolveParams . rawQuery [ k ] ;
115
+ } ) ;
116
+ }
117
+ return filter ;
118
+ }
119
+
136
120
export const findManyResolver = new Resolver ( {
137
121
name : 'findMany' ,
138
122
kind : 'query' ,
@@ -157,7 +141,7 @@ export const findManyResolver = new Resolver({
157
141
158
142
let list = userList . slice ( ) ;
159
143
list = sortUserList ( list , sort ) ;
160
- list = filteredUserList ( list , filter ) ;
144
+ list = filteredUserList ( list , prepareFilterFromArgs ( resolveParams ) ) ;
161
145
162
146
if ( skip ) {
163
147
list = list . slice ( skip ) ;
@@ -184,7 +168,7 @@ export const countResolver = new Resolver({
184
168
return Promise . resolve (
185
169
filteredUserList (
186
170
userList ,
187
- resolveParams . args && resolveParams . args . filter
171
+ prepareFilterFromArgs ( resolveParams )
188
172
) . length
189
173
) ;
190
174
} ,
@@ -194,34 +178,31 @@ userTypeComposer.setResolver('count', countResolver);
194
178
195
179
export const sortOptions = {
196
180
ID_ASC : {
197
- uniqueFields : [ 'id' ] ,
198
- sortValue : { id : 1 } ,
199
- directionFilter : ( filter , cursorData , isBefore ) => {
200
- filter . _operators = filter . _operators || { } ;
201
- filter . _operators . id = filter . _operators . id || { } ;
202
- if ( isBefore ) {
203
- filter . _operators . id . lt = cursorData . id ;
204
- } else {
205
- filter . _operators . id . gt = cursorData . id ;
206
- }
207
- return filter ;
181
+ value : { id : 1 } ,
182
+ cursorFields : [ 'id' ] ,
183
+ beforeCursorQuery : ( rawQuery , cursorData , resolveParams ) => {
184
+ if ( ! rawQuery . id ) rawQuery . id = { } ;
185
+ rawQuery . id . $lt = cursorData . id ;
186
+ } ,
187
+ afterCursorQuery : ( rawQuery , cursorData , resolveParams ) => {
188
+ if ( ! rawQuery . id ) rawQuery . id = { } ;
189
+ rawQuery . id . $gt = cursorData . id ;
208
190
} ,
209
191
} ,
210
192
AGE_ID_DESC : {
211
- uniqueFields : [ 'age' , 'id' ] ,
212
- sortValue : { age : - 1 , id : - 1 } ,
213
- directionFilter : ( filter , cursorData , isBefore ) => {
214
- filter . _operators = filter . _operators || { } ;
215
- filter . _operators . id = filter . _operators . id || { } ;
216
- filter . _operators . age = filter . _operators . age || { } ;
217
- if ( isBefore ) {
218
- filter . _operators . age . gt = cursorData . age ;
219
- filter . _operators . id . gt = cursorData . id ;
220
- } else {
221
- filter . _operators . age . lt = cursorData . age ;
222
- filter . _operators . id . lt = cursorData . id ;
223
- }
224
- return filter ;
193
+ value : { age : - 1 , id : - 1 } ,
194
+ cursorFields : [ 'age' , 'id' ] ,
195
+ beforeCursorQuery : ( rawQuery , cursorData , resolveParams ) => {
196
+ if ( ! rawQuery . age ) rawQuery . age = { } ;
197
+ if ( ! rawQuery . id ) rawQuery . id = { } ;
198
+ rawQuery . age = { $gt : cursorData . age } ;
199
+ rawQuery . id = { $gt : cursorData . id } ;
200
+ } ,
201
+ afterCursorQuery : ( rawQuery , cursorData , resolveParams ) => {
202
+ if ( ! rawQuery . age ) rawQuery . age = { } ;
203
+ if ( ! rawQuery . id ) rawQuery . id = { } ;
204
+ rawQuery . age = { $lt : cursorData . age } ;
205
+ rawQuery . id = { $lt : cursorData . id } ;
225
206
} ,
226
207
} ,
227
208
} ;
0 commit comments