mirror of
https://github.com/open-policy-agent/opa.git
synced 2026-08-18 22:41:00 -06:00
45a3d8ee70
This commit addresses issues around vendoring the 3rd party GraphQL parser library, `vektah/gqlparser`, which is used by our GraphQL builtins. By directly depending on the library, we accidentally forced all of our library users to have to match `gqlparser` versions, which could cause problems if they wanted to use downstream GraphQL libraries. To fix this version clash problem, this PR internalizes `vektah/gqlparser` v2.4.8 into the `internal/gqlparser` package (we can update to v2.5.0 later). Scripts are included to automate some of the internalizing process if we wish to update the library in the future. Fixes: #5065 Signed-off-by: Philip Conrad <philipaconrad@gmail.com>
147 lines
4.4 KiB
GraphQL
147 lines
4.4 KiB
GraphQL
schema {
|
|
query: Query
|
|
mutation: Mutation
|
|
subscription: Subscription
|
|
}
|
|
|
|
# The query type, represents all of the entry points into our object graph
|
|
type Query {
|
|
hero(episode: Episode): Character
|
|
reviews(episode: Episode!): [Review]
|
|
search(text: String): [SearchResult]
|
|
character(id: ID!): Character
|
|
droid(id: ID!): Droid
|
|
human(id: ID!): Human
|
|
starship(id: ID!): Starship
|
|
}
|
|
# The mutation type, represents all updates we can make to our data
|
|
type Mutation {
|
|
createReview(episode: Episode, review: ReviewInput!): Review
|
|
}
|
|
# The subscription type, represents all subscriptions we can make to our data
|
|
type Subscription {
|
|
reviewAdded(episode: Episode): Review
|
|
}
|
|
# The episodes in the Star Wars trilogy
|
|
enum Episode {
|
|
# Star Wars Episode IV: A New Hope, released in 1977.
|
|
NEWHOPE
|
|
# Star Wars Episode V: The Empire Strikes Back, released in 1980.
|
|
EMPIRE
|
|
# Star Wars Episode VI: Return of the Jedi, released in 1983.
|
|
JEDI
|
|
}
|
|
# A character from the Star Wars universe
|
|
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]
|
|
# The friends of the character exposed as a connection with edges
|
|
friendsConnection(first: Int, after: ID): FriendsConnection!
|
|
# The movies this character appears in
|
|
appearsIn: [Episode]!
|
|
}
|
|
# Units of height
|
|
enum LengthUnit {
|
|
# The standard unit around the world
|
|
METER
|
|
# Primarily used in the United States
|
|
FOOT
|
|
}
|
|
# A humanoid creature from the Star Wars universe
|
|
type Human implements Character {
|
|
# The ID of the human
|
|
id: ID!
|
|
# What this human calls themselves
|
|
name: String!
|
|
# The home planet of the human, or null if unknown
|
|
homePlanet: String
|
|
# Height in the preferred unit, default is meters
|
|
height(unit: LengthUnit = METER): Float
|
|
# Mass in kilograms, or null if unknown
|
|
mass: Float
|
|
# This human's friends, or an empty list if they have none
|
|
friends: [Character]
|
|
# The friends of the human exposed as a connection with edges
|
|
friendsConnection(first: Int, after: ID): FriendsConnection!
|
|
# The movies this human appears in
|
|
appearsIn: [Episode]!
|
|
# A list of starships this person has piloted, or an empty list if none
|
|
starships: [Starship]
|
|
}
|
|
# An autonomous mechanical character in the Star Wars universe
|
|
type Droid implements Character {
|
|
# The ID of the droid
|
|
id: ID!
|
|
# What others call this droid
|
|
name: String!
|
|
# This droid's friends, or an empty list if they have none
|
|
friends: [Character]
|
|
# The friends of the droid exposed as a connection with edges
|
|
friendsConnection(first: Int, after: ID): FriendsConnection!
|
|
# The movies this droid appears in
|
|
appearsIn: [Episode]!
|
|
# This droid's primary function
|
|
primaryFunction: String
|
|
}
|
|
# A connection object for a character's friends
|
|
type FriendsConnection {
|
|
# The total number of friends
|
|
totalCount: Int
|
|
# The edges for each of the character's friends.
|
|
edges: [FriendsEdge]
|
|
# A list of the friends, as a convenience when edges are not needed.
|
|
friends: [Character]
|
|
# Information for paginating this connection
|
|
pageInfo: PageInfo!
|
|
}
|
|
# An edge object for a character's friends
|
|
type FriendsEdge {
|
|
# A cursor used for pagination
|
|
cursor: ID!
|
|
# The character represented by this friendship edge
|
|
node: Character
|
|
}
|
|
# Information for paginating this connection
|
|
type PageInfo {
|
|
startCursor: ID
|
|
endCursor: ID
|
|
hasNextPage: Boolean!
|
|
}
|
|
# Represents a review for a movie
|
|
type Review {
|
|
# The movie
|
|
episode: Episode
|
|
# The number of stars this review gave, 1-5
|
|
stars: Int!
|
|
# Comment about the movie
|
|
commentary: String
|
|
}
|
|
# The input object sent when someone is creating a new review
|
|
input ReviewInput {
|
|
# 0-5 stars
|
|
stars: Int!
|
|
# Comment about the movie, optional
|
|
commentary: String
|
|
# Favorite color, optional
|
|
favorite_color: ColorInput
|
|
}
|
|
# The input object sent when passing in a color
|
|
input ColorInput {
|
|
red: Int!
|
|
green: Int!
|
|
blue: Int!
|
|
}
|
|
type Starship {
|
|
# The ID of the starship
|
|
id: ID!
|
|
# The name of the starship
|
|
name: String!
|
|
# Length of the starship, along the longest axis
|
|
length(unit: LengthUnit = METER): Float
|
|
coordinates: [[Float!]!]
|
|
}
|
|
union SearchResult = Human | Droid | Starship |