264 lines
3.7 KiB
Plaintext
264 lines
3.7 KiB
Plaintext
# GraphQL Schema Definition Language
|
|
|
|
"""
|
|
Color value
|
|
"""
|
|
scalar Color
|
|
|
|
"""
|
|
Node interface
|
|
|
|
- allows (re)fetch arbitrary entity only by ID
|
|
- allows client side cache normalization
|
|
|
|
See [Relay Global Object Identification Specification](https://facebook.github.io/relay/graphql/objectidentification.htm)
|
|
"""
|
|
interface Node {
|
|
"""
|
|
Globally unique identifier,
|
|
typically `${__typename}:${dbId}`
|
|
may be encoded in *base64*
|
|
"""
|
|
id: ID!
|
|
}
|
|
|
|
"""
|
|
A character in the Star Wars Trilogy
|
|
"""
|
|
interface Character {
|
|
"""
|
|
The id of the character.
|
|
"""
|
|
id: ID!
|
|
|
|
"""
|
|
The name of the character.
|
|
"""
|
|
name: String
|
|
|
|
"""
|
|
The friends of the character, or an empty list if they have none.
|
|
"""
|
|
friends: [Character]
|
|
|
|
"""
|
|
Which movies they appear in
|
|
"""
|
|
appearsIn: [Episode]
|
|
|
|
"""
|
|
All secrets about their past
|
|
"""
|
|
secretBackstory: String
|
|
}
|
|
|
|
"""
|
|
A mechanical creature in the Star Wars universe.
|
|
"""
|
|
type Droid implements Character {
|
|
"""
|
|
The id of the droid.
|
|
"""
|
|
id: ID!
|
|
|
|
"""
|
|
The name of the droid.
|
|
"""
|
|
name: String
|
|
|
|
"""
|
|
The friends of the droid, or an empty list if they have none.
|
|
"""
|
|
friends: [Character]
|
|
|
|
"""
|
|
Which movies they appear in.
|
|
"""
|
|
appearsIn: [Episode]
|
|
|
|
"""
|
|
Construction date and the name of the designer.
|
|
"""
|
|
secretBackstory: String
|
|
|
|
"""
|
|
The primary function of the droid.
|
|
"""
|
|
primaryFunction: String
|
|
|
|
"""
|
|
Chase color of the droid.
|
|
"""
|
|
color: Color
|
|
}
|
|
|
|
# One of the films in the Star Wars Trilogy
|
|
enum Episode {
|
|
"""
|
|
Released in 1977.
|
|
"""
|
|
NEWHOPE
|
|
|
|
"""
|
|
Released in 1980.
|
|
"""
|
|
EMPIRE
|
|
|
|
"""
|
|
Released in 1983.
|
|
"""
|
|
JEDI
|
|
}
|
|
|
|
"""
|
|
A humanoid creature in the Star Wars universe.
|
|
"""
|
|
type Human implements Character {
|
|
"""
|
|
The id of the human.
|
|
"""
|
|
id: ID!
|
|
|
|
"""
|
|
The name of the human.
|
|
"""
|
|
name: String
|
|
|
|
"""
|
|
The friends of the human, or an empty list if they have none.
|
|
"""
|
|
friends: [Character]
|
|
|
|
"""
|
|
Which movies they appear in.
|
|
"""
|
|
appearsIn: [Episode]
|
|
|
|
"""
|
|
The home planet of the human, or null if unknown.
|
|
"""
|
|
homePlanet: String
|
|
|
|
"""
|
|
Where are they from and how they came to be who they are.
|
|
"""
|
|
secretBackstory: String
|
|
}
|
|
|
|
enum LengthUnit {
|
|
METER
|
|
FEET
|
|
}
|
|
|
|
type Starship {
|
|
id: ID!
|
|
name: String!
|
|
length(unit: LengthUnit = METER): Float
|
|
}
|
|
|
|
union SearchResult = Human | Droid | Starship
|
|
|
|
input SearchInput {
|
|
name: String
|
|
episode: Episode
|
|
}
|
|
|
|
"""
|
|
Root Query
|
|
"""
|
|
type Query {
|
|
"""
|
|
Return the hero by episode.
|
|
"""
|
|
hero(
|
|
"""
|
|
If omitted, returns the hero of the whole saga. If provided, returns the hero of that particular episode.
|
|
"""
|
|
episode: Episode
|
|
): Character
|
|
|
|
"""
|
|
Return the Human by ID.
|
|
"""
|
|
human(
|
|
"""
|
|
id of the human
|
|
"""
|
|
id: ID!
|
|
): Human
|
|
|
|
"""
|
|
Return the Droid by ID.
|
|
"""
|
|
droid(
|
|
"""
|
|
id of the droid
|
|
"""
|
|
id: ID!
|
|
): Droid
|
|
|
|
"""
|
|
Search everything by name
|
|
|
|
__NOTE__: You should use Relay pagination
|
|
"""
|
|
search(search: SearchInput!): [SearchResult]
|
|
@deprecated(reason: "`search` will be replaced.")
|
|
}
|
|
|
|
"""
|
|
Root Mutation
|
|
"""
|
|
type Mutation {
|
|
"""
|
|
Save the favorite episode.
|
|
"""
|
|
favorite(
|
|
"""
|
|
Favorite episode.
|
|
"""
|
|
episode: Episode!
|
|
): Episode
|
|
}
|
|
|
|
"""
|
|
Subscriptions — live events
|
|
"""
|
|
type Subscription {
|
|
"""
|
|
Message
|
|
"""
|
|
message: String
|
|
}
|
|
|
|
extend type Query {
|
|
"""
|
|
Dummy query for highlighting test
|
|
"""
|
|
dummy(
|
|
int: Int = 123
|
|
float: Float = 123.456
|
|
str: String = "Hello World!"
|
|
boolDefaultTrue: Boolean = true
|
|
boolDefaultFalse: Boolean = false
|
|
id: ID
|
|
search: SearchInput = null
|
|
): Boolean
|
|
}
|
|
|
|
schema {
|
|
query: Query
|
|
mutation: Mutation
|
|
subscription: Subscription
|
|
}
|
|
|
|
# GraphQL Query Language
|
|
|
|
query dummyQuery($int: Int) {
|
|
dummy(int: $int)
|
|
}
|
|
|
|
mutation favoriteEpisode($episode: Episode) {
|
|
favorite(episode: $episode)
|
|
}
|