@@ -11,27 +11,55 @@ import { UserTC } from './models/user';
11
11
12
12
// create GraphQL Schema with all available resolvers for User Type
13
13
schemaComposer . Query . addFields ( {
14
- userById : UserTC . getResolver ( 'findById' ) ,
15
- userByIds : UserTC . getResolver ( 'findByIds' ) ,
16
- userOne : UserTC . getResolver ( 'findOne' ) ,
17
- userMany : UserTC . getResolver ( 'findMany' ) , // .debug(), // debug info to console for this resolver
18
- userTotal : UserTC . getResolver ( 'count' ) ,
19
- userConnection : UserTC . getResolver ( 'connection' ) ,
20
- userPagination : UserTC . getResolver ( 'pagination' ) ,
14
+ userById : UserTC . mongooseResolvers . findById ( ) ,
15
+ userByIds : UserTC . mongooseResolvers . findByIds ( ) ,
16
+ userOne : UserTC . mongooseResolvers . findOne ( ) ,
17
+ userMany : UserTC . mongooseResolvers . findMany ( ) . addFilterArg ( {
18
+ name : 'geoDistance' ,
19
+ type : `input GeoDistance {
20
+ lng: Float!
21
+ lat: Float!
22
+ # Distance in meters
23
+ distance: Float!
24
+ }` ,
25
+ description : 'Search by distance in meters' ,
26
+ query : ( rawQuery , value ) => {
27
+ if ( ! value . lng || ! value . lat || ! value . distance ) return ;
28
+ // read more https://docs.mongodb.com/manual/tutorial/query-a-2dsphere-index/
29
+ rawQuery [ 'address.geo' ] = {
30
+ $near : {
31
+ $geometry : {
32
+ type : 'Point' ,
33
+ coordinates : [ value . lng , value . lat ] ,
34
+ } ,
35
+ $maxDistance : value . distance , // <distance in meters>
36
+ } ,
37
+ } ;
38
+ } ,
39
+ } ) ,
40
+ // /* FOR DEBUG */
41
+ // .debug()
42
+ // /* OR MORE PRECISELY */
43
+ // .debugParams()
44
+ // .debugPayload()
45
+ // .debugExecTime()
46
+ userTotal : UserTC . mongooseResolvers . count ( ) ,
47
+ userConnection : UserTC . mongooseResolvers . connection ( ) ,
48
+ userPagination : UserTC . mongooseResolvers . pagination ( ) ,
21
49
} ) ;
22
50
23
51
// For debug purposes you may display resolver internals in the following manner:
24
52
// console.log(UserTC.getResolver('findMany').toString());
25
53
26
54
schemaComposer . Mutation . addFields ( {
27
- userCreate : UserTC . getResolver ( ' createOne' ) ,
28
- userCreateMany : UserTC . getResolver ( ' createMany' ) ,
29
- userUpdateById : UserTC . getResolver ( ' updateById' ) ,
30
- userUpdateOne : UserTC . getResolver ( ' updateOne' ) ,
31
- userUpdateMany : UserTC . getResolver ( ' updateMany' ) ,
32
- userRemoveById : UserTC . getResolver ( ' removeById' ) ,
33
- userRemoveOne : UserTC . getResolver ( ' removeOne' ) ,
34
- userRemoveMany : UserTC . getResolver ( ' removeMany' ) ,
55
+ userCreate : UserTC . mongooseResolvers . createOne ( ) ,
56
+ userCreateMany : UserTC . mongooseResolvers . createMany ( ) ,
57
+ userUpdateById : UserTC . mongooseResolvers . updateById ( ) ,
58
+ userUpdateOne : UserTC . mongooseResolvers . updateOne ( ) ,
59
+ userUpdateMany : UserTC . mongooseResolvers . updateMany ( ) ,
60
+ userRemoveById : UserTC . mongooseResolvers . removeById ( ) ,
61
+ userRemoveOne : UserTC . mongooseResolvers . removeOne ( ) ,
62
+ userRemoveMany : UserTC . mongooseResolvers . removeMany ( ) ,
35
63
} ) ;
36
64
37
65
const graphqlSchema = schemaComposer . buildSchema ( ) ;
0 commit comments