23
loading...
This website collects cookies to deliver better user experience
FILTERS
[ ] Mammal (200)
[x] Birds (110)
[ ] Fish (200)
ITEMS
- Eagle
- Pigeon
- Stork
- ...
query {
displayAnimals(animalTypes: [AnimalType!]!): DisplayAnimalsResult!
}
enum AnimalType {
MAMMAL
BIRD
FISH
}
type DisplayAnimalsResult {
summary: DisplayAnimalsResultSummary!
animals: FilteredAnimals!
}
type DisplayAnimalsResultSummary {
mammal: Int!
bird: Int!
fish: Int!
}
type FilteredAnimals {
totalCount: Int!
paginate(pagingOptions: PagingOptions!): [Animal!]!
}
type PagingOptions {
currentPage: Int!
itemsPerPage: Int!
}
type Animal {
name: String!
}
query DisplayAnimal(
$animalTypes: [AnimalType!]!
$pagingOptions: PagingOptions!
) {
displayAnimals(animalTypes: $animalTypes) {
summary {
mammal
bird
fish
}
animals {
totalCount
paginate(pagingOptions: $pagingOptions) {
name
}
}
}
}
summary
property feels like a boilerplate to implement.summary
DisplayAnimalsResult
and DisplayAnimalsResultSummary
are gone):query {
displayAnimals(animalTypes: [AnimalType!]!): FilteredAnimals!
}
enum AnimalType {
MAMMAL
BIRD
FISH
}
type FilteredAnimals {
totalCount: Int!
paginate(pagingOptions: PagingOptions!): [Animal!]!
}
type PagingOptions {
currentPage: Int!
itemsPerPage: Int!
}
type Animal {
name: String!
}
query DisplayAnimal(
$animalTypes: [AnimalType!]!
$pagingOptions: PagingOptions!
) {
mammal: displayAnimals(animalTypes: [MAMMAL]) {
totalCount
}
bird: displayAnimals(animalTypes: [BIRD]) {
totalCount
}
fish: displayAnimals(animalTypes: [FISH]) {
totalCount
}
displayAnimals(animalTypes: $animalTypes) {
animals {
totalCount
paginate(pagingOptions: $pagingOptions) {
name
}
}
}
}
summary
resolver on backend, leading to lesser code.