@@ -58,31 +58,6 @@ const filterArgConfig = {
5858 age : {
5959 type : GraphQLInt ,
6060 } ,
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- } ,
8661 } ,
8762 } ) ,
8863} ;
@@ -93,22 +68,20 @@ function filteredUserList(list, filter = {}) {
9368 result = result . filter ( o => o . gender === filter . gender ) ;
9469 }
9570
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 ) ;
10474 }
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 ) ;
11285 }
11386 }
11487
@@ -133,6 +106,17 @@ function sortUserList(list, sortValue = {}) {
133106 return list ;
134107}
135108
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+
136120export const findManyResolver = new Resolver ( {
137121 name : 'findMany' ,
138122 kind : 'query' ,
@@ -157,7 +141,7 @@ export const findManyResolver = new Resolver({
157141
158142 let list = userList . slice ( ) ;
159143 list = sortUserList ( list , sort ) ;
160- list = filteredUserList ( list , filter ) ;
144+ list = filteredUserList ( list , prepareFilterFromArgs ( resolveParams ) ) ;
161145
162146 if ( skip ) {
163147 list = list . slice ( skip ) ;
@@ -184,7 +168,7 @@ export const countResolver = new Resolver({
184168 return Promise . resolve (
185169 filteredUserList (
186170 userList ,
187- resolveParams . args && resolveParams . args . filter
171+ prepareFilterFromArgs ( resolveParams )
188172 ) . length
189173 ) ;
190174 } ,
@@ -194,34 +178,31 @@ userTypeComposer.setResolver('count', countResolver);
194178
195179export const sortOptions = {
196180 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 ;
208190 } ,
209191 } ,
210192 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 } ;
225206 } ,
226207 } ,
227208} ;
0 commit comments