| 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
106
107
108 |
1x
1x
1x
1x
1x
1x
1x
1x
1x
1x
3x
3x
1x
1x
1x
1x
4x
1x
1x
| const luke = {
id: '1000',
name: 'Luke Skywalker',
friendIds: ['1002', '1003', '2000', '2001'],
appearsIn: [4, 5, 6],
homePlanet: 'Tatooine'
};
const vader = {
id: '1001',
name: 'Darth Vader',
friendIds: ['1004'],
appearsIn: [4, 5, 6],
homePlanet: 'Tatooine'
};
const han = {
id: '1002',
name: 'Han Solo',
friendIds: ['1000', '1003', '2001'],
appearsIn: [4, 5, 6]
};
const leia = {
id: '1003',
name: 'Leia Organa',
friendIds: ['1000', '1002', '2000', '2001'],
appearsIn: [4, 5, 6],
homePlanet: 'Alderaan'
};
const tarkin = {
id: '1004',
name: 'Wilhuff Tarkin',
friendIds: ['1001'],
appearsIn: [4]
};
const humanData = {
1000: luke,
1001: vader,
1002: han,
1003: leia,
1004: tarkin
};
const threepio = {
id: '2000',
name: 'C-3PO',
friendIds: ['1000', '1002', '1003', '2001'],
appearsIn: [4, 5, 6],
primaryFunction: 'Protocol'
};
const artoo = {
id: '2001',
name: 'R2-D2',
friendIds: ['1000', '1002', '1003'],
appearsIn: [4, 5, 6],
primaryFunction: 'Astromech'
};
const droidData = {
2000: threepio,
2001: artoo
};
/**
* HIelper function to get a character by ID.
*/
function getCharacter(id) {
// Returning a promise just to illustrate GraphQL.js's support.
return Promise.resolve(humanData[id] || droidData[id]);
}
/**
* Allows us to query for a character's friendIds.
*/
export function getFriends(character) {
return character.friendIds.map(id => getCharacter(id));
}
/**
* Allows us to fetch the undisputed hero of the Star Wars trilogy, R2-D2.
*/
export function getHero(episode) {
if (episode === 5) {
// Luke is the hero of Episode V.
return luke;
}
// Artoo is the hero otherwise.
return artoo;
}
/**
* Allows us to query for the human with the given id.
*/
export function getHuman(id) {
return humanData[id];
}
/**
* Allows us to query for the droid with the given id.
*/
export function getDroid(id) {
return droidData[id];
}
|