directive @serviceBackedQuery(
service: String!,
"Method used to connect to the service"
methodName: String!,
) on QUERY
directive @fromNumber on OBJECT
directive @key(key: String!) on FIELD
directive @rename(name: String!) on ENUM_VALUE
schema {
query: Query
mutation: Mutation
}
type Query {
# "userById"
# userById(id: ID!): Me!,
petById(id: ID!): Pet
@serviceBackedQuery(
service: "pets",
methodName: "petGetById"
),
"me: Single-line comment"
me: Me!
active: Bool!
}
type Mutation {
createFriendMutation(
input: CreateFriendMutationInput!
): CreateFriendMutationPayload
}
type Subscription {
badge: Int!
}
type Pet {
id: ID! @fromNumber
name: String!
status: PetStatus
photosUrls: [String] @key(key: "photoUrls")
}
enum PetStatus {
AVAILABLE @rename(name: "available")
STATUS @rename(name: "status")
PENDING @rename(name: "pending")
UNKNOWN @rename(name: "")
}
type CreateFriendMutationPayload {
friend: Friend!
}
input CreateFriendMutationInput {
userId: ID!
}
scalar Url
interface User @remote {
id: ID!
name: String!
}
type Friend implements User {
"id: The friend ID"
id: ID!
name: String!
}
type FriendConnection {
totalCount: Int!
nodes: [Friend]!
}
type Me implements User {
id: ID!
name: String!
rank: Float!
email: String
age: Int
active: Bool
# friends(first: Int): FriendConnection!
notifications: [Notification]
web: String
# search(text: String!): [SearchResult]
}
type Notification {
id: ID!
title: String!
}
union SearchResult = Friend | Notification