From 1d7e81d760b9ac10cd42ac3c32d8694068b3bcac Mon Sep 17 00:00:00 2001 From: Julien Giovaresco Date: Mon, 29 Jan 2024 10:53:48 +0100 Subject: [PATCH] feat: improve graphql endpoint to accept limit param list queries --- .../samples/core/starwars/StarWarsQueryService.kt | 12 +++++++++--- .../apim/samples/ports/graphql/StarWarsResource.kt | 8 +++++--- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/app-quarkus/src/main/kotlin/io/apim/samples/core/starwars/StarWarsQueryService.kt b/app-quarkus/src/main/kotlin/io/apim/samples/core/starwars/StarWarsQueryService.kt index 33386cb..c3af71e 100644 --- a/app-quarkus/src/main/kotlin/io/apim/samples/core/starwars/StarWarsQueryService.kt +++ b/app-quarkus/src/main/kotlin/io/apim/samples/core/starwars/StarWarsQueryService.kt @@ -44,11 +44,17 @@ class StarWarsQueryService { people.add(Person(4, "Darth Vader", "41.9BBY", planets[0], listOf(films[0], films[1], films[2], films[5]), listOf(), listOf(starships[2]))) } - fun getFilms(): List = films + fun getFilms(limit: Int?): List { + return films.subList(0, limit ?: films.size) + } fun getFilm(id: Int): Film? = films.find { it.id == id } - fun getPlanets(): List = planets + fun getPlanets(limit: Int?): List { + return planets.subList(0, limit ?: planets.size) + } fun getPlanet(id: Int): Planet? = planets.find { it.id == id } - fun getPeople(): List = people + fun getPeople(limit: Int?): List { + return people.subList(0, limit ?: people.size) + } fun getPerson(id: Int): Person? = people.find { it.id == id } fun getPersonByFilm(film: Film): List = people.filter { p -> p.films.any { f -> f.id == film.id } } fun getPersonByPlanet(planet: Planet): List = people.filter { p -> p.homeWorld.id == planet.id } diff --git a/app-quarkus/src/main/kotlin/io/apim/samples/ports/graphql/StarWarsResource.kt b/app-quarkus/src/main/kotlin/io/apim/samples/ports/graphql/StarWarsResource.kt index 19841c4..39831c1 100644 --- a/app-quarkus/src/main/kotlin/io/apim/samples/ports/graphql/StarWarsResource.kt +++ b/app-quarkus/src/main/kotlin/io/apim/samples/ports/graphql/StarWarsResource.kt @@ -14,7 +14,9 @@ class StarWarsResource { @Query("allFilms") @Description("Get all films") - fun getAllFilms(): List = starWarsQueryService.getFilms() + fun getAllFilms(@Name("limit") limit: Int?): List { + return starWarsQueryService.getFilms(limit) + } @Query @Description("Get a film by id") @@ -22,7 +24,7 @@ class StarWarsResource { @Query("allPlanets") @Description("Get all planets") - fun getAllPlanets(): List = starWarsQueryService.getPlanets() + fun getAllPlanets(@Name("limit") limit: Int?): List = starWarsQueryService.getPlanets(limit) @Query @Description("Get a planet by id") @@ -30,7 +32,7 @@ class StarWarsResource { @Query("allPeople") @Description("Get all people") - fun getAllPeople(): List = starWarsQueryService.getPeople() + fun getAllPeople(@Name("limit") limit: Int?): List = starWarsQueryService.getPeople(limit) @Query @Description("Get a person by id")