-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathschema.1.js
105 lines (97 loc) · 2.36 KB
/
schema.1.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
import {
GraphQLObjectType,
GraphQLString,
GraphQLInt,
GraphQLSchema,
GraphQLList
} from 'graphql';
import Db from './db';
const Post = new GraphQLObjectType({
name: 'Post',
description: 'Blog post',
fields: () => {
return {
id: {
type: GraphQLInt
},
title: {
type: GraphQLString
},
content: {
type: GraphQLString
},
person: {
type: Person,
resolve(post) {
/****** */
return post.getPerson();
}
}
};
}
});
const Person = new GraphQLObjectType({
name: 'Person',
description: 'This represents a Person',
fields: () => {
return {
id: {
type: GraphQLInt
},
firstName: {
type: GraphQLString,
resolve(person) {
return person.first_name;
}
},
lastName: {
type: GraphQLString,
resolve(person) {
return person.last_name;
}
},
fullName: { /*****/
type: GraphQLString,
resolve(person) {
return `${person.first_name} ${person.last_name}`;
}
},
email: {
type: GraphQLString
},
posts: {
type: new GraphQLList(Post),
resolve(person) {
/*******/
return person.getPosts();
}
}
};
}
});
const Query = new GraphQLObjectType({
name: 'Query',
description: 'Root query object',
fields: () => {
return {
people: {
type: new GraphQLList(Person),
resolve() {
/*******/
return Db.models.person.findAll();
}
},
posts: {
type: new GraphQLList(Post),
resolve() {
/*******/
return Db.models.post.findAll();
}
}
};
}
});
const Schema = new GraphQLSchema({
query: Query
});
export default Schema;