1
+ /* eslint-disable @typescript-eslint/explicit-module-boundary-types */
1
2
import { schemaComposer , ResolverResolveParams } from 'graphql-compose' ;
2
- import {
3
- GraphQLString ,
4
- GraphQLObjectType ,
5
- GraphQLInputObjectType ,
6
- GraphQLEnumType ,
7
- GraphQLInt ,
8
- } from 'graphql-compose/lib/graphql' ;
9
- import type { ConnectionSortMapOpts } from '../connectionResolver' ;
3
+ import type { ConnectionSortMapOpts } from '../connection' ;
10
4
11
- export const UserType = new GraphQLObjectType ( {
12
- name : 'User' ,
13
- fields : {
14
- id : {
15
- type : GraphQLInt ,
16
- } ,
17
- name : {
18
- type : GraphQLString ,
19
- } ,
20
- age : {
21
- type : GraphQLInt ,
22
- } ,
23
- gender : {
24
- type : GraphQLString ,
25
- } ,
26
- } ,
27
- } ) ;
28
-
29
- export const UserLinkType = new GraphQLObjectType ( {
30
- name : 'UserLink' ,
31
- fields : {
32
- id : {
33
- type : GraphQLInt ,
34
- } ,
35
- type : {
36
- type : GraphQLString ,
37
- } ,
38
- userId : {
39
- type : GraphQLInt ,
40
- } ,
41
- otherUserId : {
42
- type : GraphQLInt ,
43
- } ,
44
- } ,
45
- } ) ;
5
+ export const UserTC = schemaComposer . createObjectTC ( `
6
+ type User {
7
+ id: Int
8
+ name: String
9
+ age: Int
10
+ gender: String
11
+ }
12
+ ` ) ;
46
13
47
- export const userTC = schemaComposer . createObjectTC ( UserType ) ;
48
- export const userLinkTC = schemaComposer . createObjectTC ( UserLinkType ) ;
14
+ export const UserLinkTC = schemaComposer . createObjectTC ( `
15
+ type UserLink {
16
+ id: Int
17
+ type: String
18
+ userId: Int
19
+ otherUserId: Int
20
+ }
21
+ ` ) ;
49
22
50
23
export const userList = [
51
24
{ id : 1 , name : 'user01' , age : 11 , gender : 'm' } ,
@@ -70,52 +43,29 @@ export const userLinkList = [
70
43
{ id : 2 , type : 'dislikes' , userId : 2 , otherUserId : 1 } ,
71
44
] ;
72
45
73
- const filterArgConfig = {
74
- name : 'filter' ,
75
- type : new GraphQLInputObjectType ( {
76
- name : 'FilterUserInput' ,
77
- fields : {
78
- gender : {
79
- type : GraphQLString ,
80
- } ,
81
- age : {
82
- type : GraphQLInt ,
83
- } ,
84
- } ,
85
- } ) ,
86
- } ;
46
+ const filterArgConfig = schemaComposer . createInputTC ( `
47
+ input FilterUserInput {
48
+ gender: String
49
+ age: Int
50
+ }
51
+ ` ) ;
87
52
88
- const filterEdgeArgConfig = {
89
- name : 'filter' ,
90
- type : new GraphQLInputObjectType ( {
91
- name : 'FilterNodeEdgeUserInput' ,
92
- fields : {
93
- edge : {
94
- type : new GraphQLInputObjectType ( {
95
- name : 'FilterNodeEdgeEdgeUserInput' ,
96
- fields : {
97
- type : {
98
- type : GraphQLString ,
99
- } ,
100
- } ,
101
- } ) ,
102
- } ,
103
- node : {
104
- type : new GraphQLInputObjectType ( {
105
- name : 'FilterNodeNodeEdgeUserInput' ,
106
- fields : {
107
- gender : {
108
- type : GraphQLString ,
109
- } ,
110
- age : {
111
- type : GraphQLInt ,
112
- } ,
113
- } ,
114
- } ) ,
115
- } ,
116
- } ,
117
- } ) ,
118
- } ;
53
+ const filterEdgeArgConfig = schemaComposer . createInputTC ( {
54
+ name : 'FilterNodeEdgeUserInput' ,
55
+ fields : {
56
+ edge : `
57
+ input FilterNodeEdgeEdgeUserInput {
58
+ type: String
59
+ }
60
+ ` ,
61
+ node : `
62
+ input FilterNodeNodeEdgeUserInput {
63
+ gender: String
64
+ age: Int
65
+ }
66
+ ` ,
67
+ } ,
68
+ } ) ;
119
69
120
70
function filterUserLink (
121
71
link : typeof userLinkList [ 0 ] ,
@@ -189,13 +139,13 @@ function prepareFilterFromArgs(resolveParams = {} as ResolverResolveParams<any,
189
139
return filter ;
190
140
}
191
141
192
- export const findManyResolver = schemaComposer . createResolver ( {
142
+ export const findManyResolver = schemaComposer . createResolver < any , any > ( {
193
143
name : 'findMany' ,
194
144
kind : 'query' ,
195
- type : UserType ,
145
+ type : UserTC ,
196
146
args : {
197
147
filter : filterArgConfig ,
198
- sort : new GraphQLEnumType ( {
148
+ sort : UserTC . schemaComposer . createEnumTC ( {
199
149
name : 'SortUserInput' ,
200
150
values : {
201
151
ID_ASC : { value : { id : 1 } } ,
@@ -204,8 +154,8 @@ export const findManyResolver = schemaComposer.createResolver({
204
154
AGE_DESC : { value : { age : - 1 } } ,
205
155
} ,
206
156
} ) ,
207
- limit : GraphQLInt ,
208
- skip : GraphQLInt ,
157
+ limit : 'Int' ,
158
+ skip : 'Int' ,
209
159
} ,
210
160
resolve : ( resolveParams ) => {
211
161
const args = resolveParams . args || { } ;
@@ -226,20 +176,18 @@ export const findManyResolver = schemaComposer.createResolver({
226
176
return Promise . resolve ( list ) ;
227
177
} ,
228
178
} ) ;
229
- userTC . setResolver ( 'findMany' , findManyResolver ) ;
230
179
231
180
export const countResolver = schemaComposer . createResolver ( {
232
181
name : 'count' ,
233
182
kind : 'query' ,
234
- type : GraphQLInt ,
183
+ type : 'Int' ,
235
184
args : {
236
185
filter : filterArgConfig ,
237
186
} ,
238
187
resolve : ( resolveParams ) => {
239
188
return Promise . resolve ( filteredUserList ( userList , prepareFilterFromArgs ( resolveParams ) ) . length ) ;
240
189
} ,
241
190
} ) ;
242
- userTC . setResolver ( 'count' , countResolver ) ;
243
191
244
192
function getThroughLinkResolver ( list : typeof userLinkList , filter : any ) {
245
193
const nodeFilter = filter ? filter . node : { } ;
@@ -255,11 +203,11 @@ function getThroughLinkResolver(list: typeof userLinkList, filter: any) {
255
203
export const findManyThroughLinkResolver = schemaComposer . createResolver ( {
256
204
name : 'findManyThroughLink' ,
257
205
kind : 'query' ,
258
- type : UserType ,
206
+ type : UserTC ,
259
207
args : {
260
208
filter : filterEdgeArgConfig ,
261
- limit : GraphQLInt ,
262
- skip : GraphQLInt ,
209
+ limit : 'Int' ,
210
+ skip : 'Int' ,
263
211
} ,
264
212
resolve : async ( resolveParams ) => {
265
213
const args = resolveParams . args || { } ;
@@ -277,12 +225,11 @@ export const findManyThroughLinkResolver = schemaComposer.createResolver({
277
225
return getThroughLinkResolver ( list , args . filter ) ;
278
226
} ,
279
227
} ) ;
280
- userTC . setResolver ( 'findManyThroughLink' , findManyThroughLinkResolver ) ;
281
228
282
229
export const countThroughLinkResolver = schemaComposer . createResolver ( {
283
230
name : 'count' ,
284
231
kind : 'query' ,
285
- type : GraphQLInt ,
232
+ type : 'Int' ,
286
233
args : {
287
234
filter : filterEdgeArgConfig ,
288
235
} ,
@@ -291,7 +238,6 @@ export const countThroughLinkResolver = schemaComposer.createResolver({
291
238
return getThroughLinkResolver ( userLinkList . slice ( ) , args . filter ) . length ;
292
239
} ,
293
240
} ) ;
294
- userTC . setResolver ( 'countThroughLink' , countThroughLinkResolver ) ;
295
241
296
242
export const sortOptions : ConnectionSortMapOpts = {
297
243
ID_ASC : {
0 commit comments