Skip to content

Commit 01098ab

Browse files
committed
docs(Readme): Construct graphql schema via GQC helper
1 parent c55e141 commit 01098ab

File tree

1 file changed

+21
-34
lines changed

1 file changed

+21
-34
lines changed

README.md

+21-34
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ Source code: https://github.com/nodkz/graphql-compose-mongoose-example
2626
```js
2727
import mongoose from 'mongoose';
2828
import composeWithMongoose from 'graphql-compose-mongoose';
29-
import { GraphQLSchema, GraphQLObjectType } from 'graphql';
29+
import { GQC } from 'graphql-compose';
3030

3131
// STEP 1: DEFINE MONGOOSE SCHEMA AND MODEL
3232
const LanguagesSchema = new mongoose.Schema({
@@ -66,43 +66,30 @@ const UserModel = mongoose.model('UserModel', UserSchema);
6666

6767
// STEP 2: CONVERT MONGOOSE MODEL TO GraphQL PIECES
6868
const customizationOptions = {}; // left it empty for simplicity, described below
69-
const typeComposer = composeWithMongoose(UserModel, customizationOptions);
70-
// get list of 12 Resolvers (findById, updateMany and others)
71-
const resolvers = typeComposer.getResolvers();
72-
73-
// typeComposer from (graphql-compose) provide bunch if useful methods
74-
// for modifying GraphQL Types (eg. add/remove fields, relate with other types,
75-
// restrict access due context).
76-
69+
const UserTC = composeWithMongoose(UserModel, customizationOptions);
7770

7871
// STEP 3: CREATE CRAZY GraphQL SCHEMA WITH ALL CRUD USER OPERATIONS
7972
// via graphql-compose it will be much much easier, with less typing
80-
const graphqlSchema = new GraphQLSchema({
81-
query: new GraphQLObjectType({
82-
name: 'RootQuery',
83-
fields: {
84-
userById: resolvers.get('findById').getFieldConfig(),
85-
userByIds: resolvers.get('findByIds').getFieldConfig(),
86-
userOne: resolvers.get('findOne').getFieldConfig(),
87-
userMany: resolvers.get('findMany').getFieldConfig(),
88-
userTotal: resolvers.get('count').getFieldConfig(),
89-
userConnection: resolvers.get('connection').getFieldConfig(),
90-
},
91-
}),
92-
mutation: new GraphQLObjectType({
93-
name: 'RootMutation',
94-
fields: {
95-
userCreate: resolvers.get('createOne').getFieldConfig(),
96-
userUpdateById: resolvers.get('updateById').getFieldConfig(),
97-
userUpdateOne: resolvers.get('updateOne').getFieldConfig(),
98-
userUpdateMany: resolvers.get('updateMany').getFieldConfig(),
99-
userRemoveById: resolvers.get('removeById').getFieldConfig(),
100-
userRemoveOne: resolvers.get('removeOne').getFieldConfig(),
101-
userRemoveMany: resolvers.get('removeMany').getFieldConfig(),
102-
},
103-
}),
73+
GQC.rootQuery().addFields({
74+
userById: UserTC.getResolver('findById'),
75+
userByIds: UserTC.getResolver('findByIds'),
76+
userOne: UserTC.getResolver('findOne'),
77+
userMany: UserTC.getResolver('findMany'),
78+
userTotal: UserTC.getResolver('count'),
79+
userConnection: UserTC.getResolver('connection'),
80+
});
81+
82+
GQC.rootMutation().addFields({
83+
userCreate: UserTC.getResolver('createOne'),
84+
userUpdateById: UserTC.getResolver('updateById'),
85+
userUpdateOne: UserTC.getResolver('updateOne'),
86+
userUpdateMany: UserTC.getResolver('updateMany'),
87+
userRemoveById: UserTC.getResolver('removeById'),
88+
userRemoveOne: UserTC.getResolver('removeOne'),
89+
userRemoveMany: UserTC.getResolver('removeMany'),
10490
});
10591

92+
const graphqlSchema = GQC.buildSchema();
10693
export default graphqlSchema;
10794
```
10895
That's all!
@@ -112,7 +99,7 @@ I don't think so, because by default internally was created about 55 graphql typ
11299

113100
Customization options
114101
=====================
115-
When we convert model `const typeComposer = composeWithMongoose(UserModel, customizationOptions);` you may tune every piece of future derived types and resolvers.
102+
When we convert model `const UserTC = composeWithMongoose(UserModel, customizationOptions);` you may tune every piece of future derived types and resolvers.
116103

117104
### Here is flow typed definition of this options:
118105

0 commit comments

Comments
 (0)