bun install wrdu-graphql
Basic:
const gql = new GraphQL(
query([
field("Animal").children([
field("id"),
field("type"),
field("name"),
field("age"),
field("owner").children([field("name")]),
]),
])
);
# Result
query {
Animal {
id
type
name
age
owner {
name
}
}
}
Params:
const gql = new GraphQL(
query([
field("Animal")
.children([
field("id"),
field("type"),
field("name"),
field("age").params([param("in", "SECONDS")]),
])
.params([param("search", "dog", true)]),
])
);
# Result
query {
Animal(search: "dog") {
id
type
name
age(in: SECONDS)
}
}
// true at the end means that "dog" should be treated as a string
param("search", "dog", true); // Animal(search: "dog")
param("search", "dog"); // Animal(search: dog)
Labels:
const gql = new GraphQL(
query([
field("Animal").children([
field("id"),
field("type", "animalType"),
field("name"),
field("age"),
]),
])
);
# Result
query {
Animal {
id
animalType: type
name
age
}
}
Fragments:
Query:
const gql = new GraphQL(
query([field("Animal").children([field("...AnimalFields")])]),
[
fragment("AnimalFields", "Animal", [
field("id"),
field("type"),
field("name"),
field("age"),
]),
]
);
# Result
query {
Animal {
...AnimalFields
}
}
fragment AnimalFields on Animal {
id
type
name
age
}
Directives:
Query:
const gql = new GraphQL(
query([
field("Animal").children([
field("id"),
field("type"),
field("name"),
field("age"),
field("owner").children([
field("name")
]),
]).params([
param("name", "$name")
]),
]).directives("AnimalSearch", [
param("$name", "String")
])
);
# Result
query AnimalSearch($name: String) {
Animal(name: $name) {
id
type
name
age
owner {
name
}
}
}