Skip to content

Commit 1d7e81d

Browse files
committed
feat: improve graphql endpoint to accept limit param list queries
1 parent b8affd5 commit 1d7e81d

File tree

2 files changed

+14
-6
lines changed

2 files changed

+14
-6
lines changed

app-quarkus/src/main/kotlin/io/apim/samples/core/starwars/StarWarsQueryService.kt

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,11 +44,17 @@ class StarWarsQueryService {
4444
people.add(Person(4, "Darth Vader", "41.9BBY", planets[0], listOf(films[0], films[1], films[2], films[5]), listOf(), listOf(starships[2])))
4545
}
4646

47-
fun getFilms(): List<Film> = films
47+
fun getFilms(limit: Int?): List<Film> {
48+
return films.subList(0, limit ?: films.size)
49+
}
4850
fun getFilm(id: Int): Film? = films.find { it.id == id }
49-
fun getPlanets(): List<Planet> = planets
51+
fun getPlanets(limit: Int?): List<Planet> {
52+
return planets.subList(0, limit ?: planets.size)
53+
}
5054
fun getPlanet(id: Int): Planet? = planets.find { it.id == id }
51-
fun getPeople(): List<Person> = people
55+
fun getPeople(limit: Int?): List<Person> {
56+
return people.subList(0, limit ?: people.size)
57+
}
5258
fun getPerson(id: Int): Person? = people.find { it.id == id }
5359
fun getPersonByFilm(film: Film): List<Person> = people.filter { p -> p.films.any { f -> f.id == film.id } }
5460
fun getPersonByPlanet(planet: Planet): List<Person> = people.filter { p -> p.homeWorld.id == planet.id }

app-quarkus/src/main/kotlin/io/apim/samples/ports/graphql/StarWarsResource.kt

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,23 +14,25 @@ class StarWarsResource {
1414

1515
@Query("allFilms")
1616
@Description("Get all films")
17-
fun getAllFilms(): List<Film> = starWarsQueryService.getFilms()
17+
fun getAllFilms(@Name("limit") limit: Int?): List<Film> {
18+
return starWarsQueryService.getFilms(limit)
19+
}
1820

1921
@Query
2022
@Description("Get a film by id")
2123
fun getFilm(@Name("filmId") id: Int): Film? = starWarsQueryService.getFilm(id)
2224

2325
@Query("allPlanets")
2426
@Description("Get all planets")
25-
fun getAllPlanets(): List<Planet> = starWarsQueryService.getPlanets()
27+
fun getAllPlanets(@Name("limit") limit: Int?): List<Planet> = starWarsQueryService.getPlanets(limit)
2628

2729
@Query
2830
@Description("Get a planet by id")
2931
fun getPlanet(@Name("planetId") id: Int): Planet? = starWarsQueryService.getPlanet(id)
3032

3133
@Query("allPeople")
3234
@Description("Get all people")
33-
fun getAllPeople(): List<Person> = starWarsQueryService.getPeople()
35+
fun getAllPeople(@Name("limit") limit: Int?): List<Person> = starWarsQueryService.getPeople(limit)
3436

3537
@Query
3638
@Description("Get a person by id")

0 commit comments

Comments
 (0)