@@ -11,27 +11,55 @@ import { UserTC } from './models/user';
1111
1212// create GraphQL Schema with all available resolvers for User Type
1313schemaComposer . 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 ( ) ,
2149} ) ;
2250
2351// For debug purposes you may display resolver internals in the following manner:
2452// console.log(UserTC.getResolver('findMany').toString());
2553
2654schemaComposer . 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 ( ) ,
3563} ) ;
3664
3765const graphqlSchema = schemaComposer . buildSchema ( ) ;
0 commit comments