diff --git a/backend/bin/default/META-INF/micronaut/io.micronaut.core.beans.BeanIntrospectionReference/com.cesaredecal.models.$PeopleResponse$Introspection b/backend/bin/default/META-INF/micronaut/io.micronaut.core.beans.BeanIntrospectionReference/com.cesaredecal.starwarsapi.models.$PeopleResponse$Introspection similarity index 100% rename from backend/bin/default/META-INF/micronaut/io.micronaut.core.beans.BeanIntrospectionReference/com.cesaredecal.models.$PeopleResponse$Introspection rename to backend/bin/default/META-INF/micronaut/io.micronaut.core.beans.BeanIntrospectionReference/com.cesaredecal.starwarsapi.models.$PeopleResponse$Introspection diff --git a/backend/bin/default/META-INF/micronaut/io.micronaut.core.beans.BeanIntrospectionReference/com.cesaredecal.models.$PeopleResponse$Person$Introspection b/backend/bin/default/META-INF/micronaut/io.micronaut.core.beans.BeanIntrospectionReference/com.cesaredecal.starwarsapi.models.$PeopleResponse$Person$Introspection similarity index 100% rename from backend/bin/default/META-INF/micronaut/io.micronaut.core.beans.BeanIntrospectionReference/com.cesaredecal.models.$PeopleResponse$Person$Introspection rename to backend/bin/default/META-INF/micronaut/io.micronaut.core.beans.BeanIntrospectionReference/com.cesaredecal.starwarsapi.models.$PeopleResponse$Person$Introspection diff --git a/backend/bin/default/META-INF/micronaut/io.micronaut.core.beans.BeanIntrospectionReference/com.cesaredecal.models.$PlanetsResponse$Introspection b/backend/bin/default/META-INF/micronaut/io.micronaut.core.beans.BeanIntrospectionReference/com.cesaredecal.starwarsapi.models.$PlanetsResponse$Introspection similarity index 100% rename from backend/bin/default/META-INF/micronaut/io.micronaut.core.beans.BeanIntrospectionReference/com.cesaredecal.models.$PlanetsResponse$Introspection rename to backend/bin/default/META-INF/micronaut/io.micronaut.core.beans.BeanIntrospectionReference/com.cesaredecal.starwarsapi.models.$PlanetsResponse$Introspection diff --git a/backend/bin/default/META-INF/micronaut/io.micronaut.core.beans.BeanIntrospectionReference/com.cesaredecal.models.$PlanetsResponse$Planet$Introspection b/backend/bin/default/META-INF/micronaut/io.micronaut.core.beans.BeanIntrospectionReference/com.cesaredecal.starwarsapi.models.$PlanetsResponse$Planet$Introspection similarity index 100% rename from backend/bin/default/META-INF/micronaut/io.micronaut.core.beans.BeanIntrospectionReference/com.cesaredecal.models.$PlanetsResponse$Planet$Introspection rename to backend/bin/default/META-INF/micronaut/io.micronaut.core.beans.BeanIntrospectionReference/com.cesaredecal.starwarsapi.models.$PlanetsResponse$Planet$Introspection diff --git a/backend/bin/default/META-INF/micronaut/io.micronaut.inject.BeanDefinitionReference/com.cesaredecal.$JsonFileService$Definition b/backend/bin/default/META-INF/micronaut/io.micronaut.inject.BeanDefinitionReference/com.cesaredecal.starwarsapi.$JsonFileService$Definition similarity index 100% rename from backend/bin/default/META-INF/micronaut/io.micronaut.inject.BeanDefinitionReference/com.cesaredecal.$JsonFileService$Definition rename to backend/bin/default/META-INF/micronaut/io.micronaut.inject.BeanDefinitionReference/com.cesaredecal.starwarsapi.$JsonFileService$Definition diff --git a/backend/bin/default/META-INF/micronaut/io.micronaut.inject.BeanDefinitionReference/com.cesaredecal.$StarWarsClient$Intercepted$Definition b/backend/bin/default/META-INF/micronaut/io.micronaut.inject.BeanDefinitionReference/com.cesaredecal.starwarsapi.$StarWarsClient$Intercepted$Definition similarity index 100% rename from backend/bin/default/META-INF/micronaut/io.micronaut.inject.BeanDefinitionReference/com.cesaredecal.$StarWarsClient$Intercepted$Definition rename to backend/bin/default/META-INF/micronaut/io.micronaut.inject.BeanDefinitionReference/com.cesaredecal.starwarsapi.$StarWarsClient$Intercepted$Definition diff --git a/backend/bin/default/META-INF/micronaut/io.micronaut.inject.BeanDefinitionReference/com.cesaredecal.$StarWarsService$ApplicationEventListener$init1$Intercepted$Definition b/backend/bin/default/META-INF/micronaut/io.micronaut.inject.BeanDefinitionReference/com.cesaredecal.starwarsapi.$StarWarsService$ApplicationEventListener$init1$Intercepted$Definition similarity index 100% rename from backend/bin/default/META-INF/micronaut/io.micronaut.inject.BeanDefinitionReference/com.cesaredecal.$StarWarsService$ApplicationEventListener$init1$Intercepted$Definition rename to backend/bin/default/META-INF/micronaut/io.micronaut.inject.BeanDefinitionReference/com.cesaredecal.starwarsapi.$StarWarsService$ApplicationEventListener$init1$Intercepted$Definition diff --git a/backend/bin/default/META-INF/micronaut/io.micronaut.inject.BeanDefinitionReference/com.cesaredecal.$StarWarsService$Definition b/backend/bin/default/META-INF/micronaut/io.micronaut.inject.BeanDefinitionReference/com.cesaredecal.starwarsapi.$StarWarsService$Definition similarity index 100% rename from backend/bin/default/META-INF/micronaut/io.micronaut.inject.BeanDefinitionReference/com.cesaredecal.$StarWarsService$Definition rename to backend/bin/default/META-INF/micronaut/io.micronaut.inject.BeanDefinitionReference/com.cesaredecal.starwarsapi.$StarWarsService$Definition diff --git a/backend/bin/default/com/cesaredecal/$DefaultController$ApplicationEventListener$init1$Intercepted$Definition$Exec.class b/backend/bin/default/com/cesaredecal/$DefaultController$ApplicationEventListener$init1$Intercepted$Definition$Exec.class deleted file mode 100644 index 99e92ab..0000000 Binary files a/backend/bin/default/com/cesaredecal/$DefaultController$ApplicationEventListener$init1$Intercepted$Definition$Exec.class and /dev/null differ diff --git a/backend/bin/default/com/cesaredecal/$DefaultController$ApplicationEventListener$init1$Intercepted$Definition.class b/backend/bin/default/com/cesaredecal/$DefaultController$ApplicationEventListener$init1$Intercepted$Definition.class deleted file mode 100644 index 6b01e0a..0000000 Binary files a/backend/bin/default/com/cesaredecal/$DefaultController$ApplicationEventListener$init1$Intercepted$Definition.class and /dev/null differ diff --git a/backend/bin/default/com/cesaredecal/$DefaultController$Definition$Exec.class b/backend/bin/default/com/cesaredecal/$DefaultController$Definition$Exec.class deleted file mode 100644 index 55cc334..0000000 Binary files a/backend/bin/default/com/cesaredecal/$DefaultController$Definition$Exec.class and /dev/null differ diff --git a/backend/bin/default/com/cesaredecal/$DefaultController$Definition.class b/backend/bin/default/com/cesaredecal/$DefaultController$Definition.class deleted file mode 100644 index 64b14cc..0000000 Binary files a/backend/bin/default/com/cesaredecal/$DefaultController$Definition.class and /dev/null differ diff --git a/backend/bin/default/com/cesaredecal/$DefaultController$ReflectConfig.class b/backend/bin/default/com/cesaredecal/$DefaultController$ReflectConfig.class deleted file mode 100644 index bae0d0c..0000000 Binary files a/backend/bin/default/com/cesaredecal/$DefaultController$ReflectConfig.class and /dev/null differ diff --git a/backend/bin/default/com/cesaredecal/$StarWarsClient$Intercepted$Definition$Exec.class b/backend/bin/default/com/cesaredecal/$StarWarsClient$Intercepted$Definition$Exec.class deleted file mode 100644 index a795389..0000000 Binary files a/backend/bin/default/com/cesaredecal/$StarWarsClient$Intercepted$Definition$Exec.class and /dev/null differ diff --git a/backend/bin/default/com/cesaredecal/$StarWarsController$ApplicationEventListener$init1$Intercepted$Definition$Exec.class b/backend/bin/default/com/cesaredecal/$StarWarsController$ApplicationEventListener$init1$Intercepted$Definition$Exec.class deleted file mode 100644 index 0012c2b..0000000 Binary files a/backend/bin/default/com/cesaredecal/$StarWarsController$ApplicationEventListener$init1$Intercepted$Definition$Exec.class and /dev/null differ diff --git a/backend/bin/default/com/cesaredecal/$StarWarsController$ApplicationEventListener$init1$Intercepted$Definition.class b/backend/bin/default/com/cesaredecal/$StarWarsController$ApplicationEventListener$init1$Intercepted$Definition.class deleted file mode 100644 index ece5730..0000000 Binary files a/backend/bin/default/com/cesaredecal/$StarWarsController$ApplicationEventListener$init1$Intercepted$Definition.class and /dev/null differ diff --git a/backend/bin/default/com/cesaredecal/$StarWarsController$Definition.class b/backend/bin/default/com/cesaredecal/$StarWarsController$Definition.class index 7788c67..9c1439e 100644 Binary files a/backend/bin/default/com/cesaredecal/$StarWarsController$Definition.class and b/backend/bin/default/com/cesaredecal/$StarWarsController$Definition.class differ diff --git a/backend/bin/default/com/cesaredecal/$StarWarsService$ReflectConfig.class b/backend/bin/default/com/cesaredecal/$StarWarsService$ReflectConfig.class deleted file mode 100644 index 276641b..0000000 Binary files a/backend/bin/default/com/cesaredecal/$StarWarsService$ReflectConfig.class and /dev/null differ diff --git a/backend/bin/default/com/cesaredecal/DefaultController$ApplicationEventListener$init1$Intercepted.class b/backend/bin/default/com/cesaredecal/DefaultController$ApplicationEventListener$init1$Intercepted.class deleted file mode 100644 index 3e57476..0000000 Binary files a/backend/bin/default/com/cesaredecal/DefaultController$ApplicationEventListener$init1$Intercepted.class and /dev/null differ diff --git a/backend/bin/default/com/cesaredecal/StarWarsController$ApplicationEventListener$init1$Intercepted.class b/backend/bin/default/com/cesaredecal/StarWarsController$ApplicationEventListener$init1$Intercepted.class deleted file mode 100644 index cc596dd..0000000 Binary files a/backend/bin/default/com/cesaredecal/StarWarsController$ApplicationEventListener$init1$Intercepted.class and /dev/null differ diff --git a/backend/bin/default/com/cesaredecal/$JsonFileService$Definition.class b/backend/bin/default/com/cesaredecal/starwarsapi/$JsonFileService$Definition.class similarity index 74% rename from backend/bin/default/com/cesaredecal/$JsonFileService$Definition.class rename to backend/bin/default/com/cesaredecal/starwarsapi/$JsonFileService$Definition.class index c4a92aa..d62a79a 100644 Binary files a/backend/bin/default/com/cesaredecal/$JsonFileService$Definition.class and b/backend/bin/default/com/cesaredecal/starwarsapi/$JsonFileService$Definition.class differ diff --git a/backend/bin/default/com/cesaredecal/starwarsapi/$StarWarsClient$Intercepted$Definition$Exec.class b/backend/bin/default/com/cesaredecal/starwarsapi/$StarWarsClient$Intercepted$Definition$Exec.class new file mode 100644 index 0000000..f28f52f Binary files /dev/null and b/backend/bin/default/com/cesaredecal/starwarsapi/$StarWarsClient$Intercepted$Definition$Exec.class differ diff --git a/backend/bin/default/com/cesaredecal/$StarWarsClient$Intercepted$Definition.class b/backend/bin/default/com/cesaredecal/starwarsapi/$StarWarsClient$Intercepted$Definition.class similarity index 78% rename from backend/bin/default/com/cesaredecal/$StarWarsClient$Intercepted$Definition.class rename to backend/bin/default/com/cesaredecal/starwarsapi/$StarWarsClient$Intercepted$Definition.class index ccfac3a..a77a8ee 100644 Binary files a/backend/bin/default/com/cesaredecal/$StarWarsClient$Intercepted$Definition.class and b/backend/bin/default/com/cesaredecal/starwarsapi/$StarWarsClient$Intercepted$Definition.class differ diff --git a/backend/bin/default/com/cesaredecal/$StarWarsService$ApplicationEventListener$init1$Intercepted$Definition$Exec.class b/backend/bin/default/com/cesaredecal/starwarsapi/$StarWarsService$ApplicationEventListener$init1$Intercepted$Definition$Exec.class similarity index 71% rename from backend/bin/default/com/cesaredecal/$StarWarsService$ApplicationEventListener$init1$Intercepted$Definition$Exec.class rename to backend/bin/default/com/cesaredecal/starwarsapi/$StarWarsService$ApplicationEventListener$init1$Intercepted$Definition$Exec.class index 8145ea4..0be5141 100644 Binary files a/backend/bin/default/com/cesaredecal/$StarWarsService$ApplicationEventListener$init1$Intercepted$Definition$Exec.class and b/backend/bin/default/com/cesaredecal/starwarsapi/$StarWarsService$ApplicationEventListener$init1$Intercepted$Definition$Exec.class differ diff --git a/backend/bin/default/com/cesaredecal/$StarWarsService$ApplicationEventListener$init1$Intercepted$Definition.class b/backend/bin/default/com/cesaredecal/starwarsapi/$StarWarsService$ApplicationEventListener$init1$Intercepted$Definition.class similarity index 71% rename from backend/bin/default/com/cesaredecal/$StarWarsService$ApplicationEventListener$init1$Intercepted$Definition.class rename to backend/bin/default/com/cesaredecal/starwarsapi/$StarWarsService$ApplicationEventListener$init1$Intercepted$Definition.class index 5b8b5fc..b0a7c6d 100644 Binary files a/backend/bin/default/com/cesaredecal/$StarWarsService$ApplicationEventListener$init1$Intercepted$Definition.class and b/backend/bin/default/com/cesaredecal/starwarsapi/$StarWarsService$ApplicationEventListener$init1$Intercepted$Definition.class differ diff --git a/backend/bin/default/com/cesaredecal/$StarWarsService$Definition$Exec.class b/backend/bin/default/com/cesaredecal/starwarsapi/$StarWarsService$Definition$Exec.class similarity index 68% rename from backend/bin/default/com/cesaredecal/$StarWarsService$Definition$Exec.class rename to backend/bin/default/com/cesaredecal/starwarsapi/$StarWarsService$Definition$Exec.class index 0e003f6..2410735 100644 Binary files a/backend/bin/default/com/cesaredecal/$StarWarsService$Definition$Exec.class and b/backend/bin/default/com/cesaredecal/starwarsapi/$StarWarsService$Definition$Exec.class differ diff --git a/backend/bin/default/com/cesaredecal/$StarWarsService$Definition.class b/backend/bin/default/com/cesaredecal/starwarsapi/$StarWarsService$Definition.class similarity index 58% rename from backend/bin/default/com/cesaredecal/$StarWarsService$Definition.class rename to backend/bin/default/com/cesaredecal/starwarsapi/$StarWarsService$Definition.class index 7c39e9e..ae37082 100644 Binary files a/backend/bin/default/com/cesaredecal/$StarWarsService$Definition.class and b/backend/bin/default/com/cesaredecal/starwarsapi/$StarWarsService$Definition.class differ diff --git a/backend/bin/default/com/cesaredecal/StarWarsClient$Intercepted.class b/backend/bin/default/com/cesaredecal/starwarsapi/StarWarsClient$Intercepted.class similarity index 64% rename from backend/bin/default/com/cesaredecal/StarWarsClient$Intercepted.class rename to backend/bin/default/com/cesaredecal/starwarsapi/StarWarsClient$Intercepted.class index 8045304..365bf27 100644 Binary files a/backend/bin/default/com/cesaredecal/StarWarsClient$Intercepted.class and b/backend/bin/default/com/cesaredecal/starwarsapi/StarWarsClient$Intercepted.class differ diff --git a/backend/bin/default/com/cesaredecal/StarWarsService$ApplicationEventListener$init1$Intercepted.class b/backend/bin/default/com/cesaredecal/starwarsapi/StarWarsService$ApplicationEventListener$init1$Intercepted.class similarity index 52% rename from backend/bin/default/com/cesaredecal/StarWarsService$ApplicationEventListener$init1$Intercepted.class rename to backend/bin/default/com/cesaredecal/starwarsapi/StarWarsService$ApplicationEventListener$init1$Intercepted.class index 39929a5..f8489dd 100644 Binary files a/backend/bin/default/com/cesaredecal/StarWarsService$ApplicationEventListener$init1$Intercepted.class and b/backend/bin/default/com/cesaredecal/starwarsapi/StarWarsService$ApplicationEventListener$init1$Intercepted.class differ diff --git a/backend/bin/default/com/cesaredecal/models/$PeopleResponse$Introspection.class b/backend/bin/default/com/cesaredecal/starwarsapi/models/$PeopleResponse$Introspection.class similarity index 84% rename from backend/bin/default/com/cesaredecal/models/$PeopleResponse$Introspection.class rename to backend/bin/default/com/cesaredecal/starwarsapi/models/$PeopleResponse$Introspection.class index f1a6bc9..a84143d 100644 Binary files a/backend/bin/default/com/cesaredecal/models/$PeopleResponse$Introspection.class and b/backend/bin/default/com/cesaredecal/starwarsapi/models/$PeopleResponse$Introspection.class differ diff --git a/backend/bin/default/com/cesaredecal/models/$PeopleResponse$Person$Introspection.class b/backend/bin/default/com/cesaredecal/starwarsapi/models/$PeopleResponse$Person$Introspection.class similarity index 84% rename from backend/bin/default/com/cesaredecal/models/$PeopleResponse$Person$Introspection.class rename to backend/bin/default/com/cesaredecal/starwarsapi/models/$PeopleResponse$Person$Introspection.class index aaaab1d..dc1bf52 100644 Binary files a/backend/bin/default/com/cesaredecal/models/$PeopleResponse$Person$Introspection.class and b/backend/bin/default/com/cesaredecal/starwarsapi/models/$PeopleResponse$Person$Introspection.class differ diff --git a/backend/bin/default/com/cesaredecal/models/$PlanetsResponse$Introspection.class b/backend/bin/default/com/cesaredecal/starwarsapi/models/$PlanetsResponse$Introspection.class similarity index 84% rename from backend/bin/default/com/cesaredecal/models/$PlanetsResponse$Introspection.class rename to backend/bin/default/com/cesaredecal/starwarsapi/models/$PlanetsResponse$Introspection.class index 56116c1..f6c9906 100644 Binary files a/backend/bin/default/com/cesaredecal/models/$PlanetsResponse$Introspection.class and b/backend/bin/default/com/cesaredecal/starwarsapi/models/$PlanetsResponse$Introspection.class differ diff --git a/backend/bin/default/com/cesaredecal/models/$PlanetsResponse$Planet$Introspection.class b/backend/bin/default/com/cesaredecal/starwarsapi/models/$PlanetsResponse$Planet$Introspection.class similarity index 83% rename from backend/bin/default/com/cesaredecal/models/$PlanetsResponse$Planet$Introspection.class rename to backend/bin/default/com/cesaredecal/starwarsapi/models/$PlanetsResponse$Planet$Introspection.class index b248466..0ad4c10 100644 Binary files a/backend/bin/default/com/cesaredecal/models/$PlanetsResponse$Planet$Introspection.class and b/backend/bin/default/com/cesaredecal/starwarsapi/models/$PlanetsResponse$Planet$Introspection.class differ diff --git a/backend/bin/main/com/cesaredecal/Application.class b/backend/bin/main/com/cesaredecal/Application.class index 76eb1ff..e2ed6ff 100644 Binary files a/backend/bin/main/com/cesaredecal/Application.class and b/backend/bin/main/com/cesaredecal/Application.class differ diff --git a/backend/bin/main/com/cesaredecal/StarWarsClient.class b/backend/bin/main/com/cesaredecal/StarWarsClient.class deleted file mode 100644 index 12bde24..0000000 Binary files a/backend/bin/main/com/cesaredecal/StarWarsClient.class and /dev/null differ diff --git a/backend/bin/main/com/cesaredecal/StarWarsController.class b/backend/bin/main/com/cesaredecal/StarWarsController.class index f70aa43..17515d5 100644 Binary files a/backend/bin/main/com/cesaredecal/StarWarsController.class and b/backend/bin/main/com/cesaredecal/StarWarsController.class differ diff --git a/backend/bin/main/com/cesaredecal/StarWarsService.class b/backend/bin/main/com/cesaredecal/StarWarsService.class deleted file mode 100644 index 4ae44ea..0000000 Binary files a/backend/bin/main/com/cesaredecal/StarWarsService.class and /dev/null differ diff --git a/backend/bin/main/com/cesaredecal/models/PeopleResponse.class b/backend/bin/main/com/cesaredecal/models/PeopleResponse.class deleted file mode 100644 index daf0f28..0000000 Binary files a/backend/bin/main/com/cesaredecal/models/PeopleResponse.class and /dev/null differ diff --git a/backend/bin/main/com/cesaredecal/models/PlanetsResponse.class b/backend/bin/main/com/cesaredecal/models/PlanetsResponse.class deleted file mode 100644 index e57ef52..0000000 Binary files a/backend/bin/main/com/cesaredecal/models/PlanetsResponse.class and /dev/null differ diff --git a/backend/bin/main/com/cesaredecal/JsonFileService.class b/backend/bin/main/com/cesaredecal/starwarsapi/JsonFileService.class similarity index 76% rename from backend/bin/main/com/cesaredecal/JsonFileService.class rename to backend/bin/main/com/cesaredecal/starwarsapi/JsonFileService.class index 5b0523a..cc5c8f6 100644 Binary files a/backend/bin/main/com/cesaredecal/JsonFileService.class and b/backend/bin/main/com/cesaredecal/starwarsapi/JsonFileService.class differ diff --git a/backend/bin/main/com/cesaredecal/starwarsapi/StarWarsClient.class b/backend/bin/main/com/cesaredecal/starwarsapi/StarWarsClient.class new file mode 100644 index 0000000..e918338 Binary files /dev/null and b/backend/bin/main/com/cesaredecal/starwarsapi/StarWarsClient.class differ diff --git a/backend/bin/main/com/cesaredecal/starwarsapi/StarWarsService.class b/backend/bin/main/com/cesaredecal/starwarsapi/StarWarsService.class new file mode 100644 index 0000000..f571b24 Binary files /dev/null and b/backend/bin/main/com/cesaredecal/starwarsapi/StarWarsService.class differ diff --git a/backend/bin/main/com/cesaredecal/models/DataType.class b/backend/bin/main/com/cesaredecal/starwarsapi/models/DataType.class similarity index 50% rename from backend/bin/main/com/cesaredecal/models/DataType.class rename to backend/bin/main/com/cesaredecal/starwarsapi/models/DataType.class index 36d9e99..4814871 100644 Binary files a/backend/bin/main/com/cesaredecal/models/DataType.class and b/backend/bin/main/com/cesaredecal/starwarsapi/models/DataType.class differ diff --git a/backend/bin/main/com/cesaredecal/models/PeopleResponse$Person.class b/backend/bin/main/com/cesaredecal/starwarsapi/models/PeopleResponse$Person.class similarity index 80% rename from backend/bin/main/com/cesaredecal/models/PeopleResponse$Person.class rename to backend/bin/main/com/cesaredecal/starwarsapi/models/PeopleResponse$Person.class index 40f4a41..54e13ea 100644 Binary files a/backend/bin/main/com/cesaredecal/models/PeopleResponse$Person.class and b/backend/bin/main/com/cesaredecal/starwarsapi/models/PeopleResponse$Person.class differ diff --git a/backend/bin/main/com/cesaredecal/starwarsapi/models/PeopleResponse.class b/backend/bin/main/com/cesaredecal/starwarsapi/models/PeopleResponse.class new file mode 100644 index 0000000..c6acbdc Binary files /dev/null and b/backend/bin/main/com/cesaredecal/starwarsapi/models/PeopleResponse.class differ diff --git a/backend/bin/main/com/cesaredecal/models/PlanetsResponse$Planet.class b/backend/bin/main/com/cesaredecal/starwarsapi/models/PlanetsResponse$Planet.class similarity index 79% rename from backend/bin/main/com/cesaredecal/models/PlanetsResponse$Planet.class rename to backend/bin/main/com/cesaredecal/starwarsapi/models/PlanetsResponse$Planet.class index 4a8b59a..1c1ae07 100644 Binary files a/backend/bin/main/com/cesaredecal/models/PlanetsResponse$Planet.class and b/backend/bin/main/com/cesaredecal/starwarsapi/models/PlanetsResponse$Planet.class differ diff --git a/backend/bin/main/com/cesaredecal/starwarsapi/models/PlanetsResponse.class b/backend/bin/main/com/cesaredecal/starwarsapi/models/PlanetsResponse.class new file mode 100644 index 0000000..1de4e29 Binary files /dev/null and b/backend/bin/main/com/cesaredecal/starwarsapi/models/PlanetsResponse.class differ diff --git a/backend/src/main/java/com/cesaredecal/Application.java b/backend/src/main/java/com/cesaredecal/Application.java index 06346d1..66d2829 100644 --- a/backend/src/main/java/com/cesaredecal/Application.java +++ b/backend/src/main/java/com/cesaredecal/Application.java @@ -1,16 +1,10 @@ package com.cesaredecal; import io.micronaut.runtime.Micronaut; -import io.micronaut.runtime.event.ApplicationStartupEvent; -import io.micronaut.runtime.event.annotation.EventListener; public class Application { public static void main(String[] args) { Micronaut.run(Application.class, args); } - - @EventListener - void onStartup(ApplicationStartupEvent event) { - } } \ No newline at end of file diff --git a/backend/src/main/java/com/cesaredecal/StarWarsController.java b/backend/src/main/java/com/cesaredecal/StarWarsController.java index c0bf5b1..c3bd5b2 100644 --- a/backend/src/main/java/com/cesaredecal/StarWarsController.java +++ b/backend/src/main/java/com/cesaredecal/StarWarsController.java @@ -1,5 +1,6 @@ package com.cesaredecal; +import com.cesaredecal.starwarsapi.StarWarsService; import io.micronaut.core.annotation.Nullable; import io.micronaut.http.MediaType; import io.micronaut.http.annotation.Controller; @@ -11,7 +12,7 @@ import reactor.core.publisher.Mono; -import com.cesaredecal.models.DataType; +import com.cesaredecal.starwarsapi.models.DataType; @Controller("/api/v1") public class StarWarsController { @@ -26,31 +27,24 @@ public StarWarsController(StarWarsService starWarsService) { // People endpoints @Get(value = "/people/columns", produces = MediaType.APPLICATION_JSON) - public Mono getPeopleTableColumns() throws IOException { + public Mono getPeopleTableColumns() { return starWarsService.fetchColumns(DataType.PEOPLE); } @Get(value = "/people/data", produces = MediaType.APPLICATION_JSON) - public Mono getPeople(@Nullable @QueryValue String sortBy, @Nullable @QueryValue String sortOrder) throws IOException { + public Mono getPeople(@Nullable @QueryValue String sortBy, @Nullable @QueryValue String sortOrder) { return starWarsService.fetchTableDataFromStorage(DataType.PEOPLE, sortBy, sortOrder); } // Planets endpoints @Get(value = "/planets/columns", produces = MediaType.APPLICATION_JSON) - public Mono getPlanetsTableColumns() throws IOException { + public Mono getPlanetsTableColumns() { return starWarsService.fetchColumns(DataType.PLANETS); } @Get(value = "/planets/data", produces = MediaType.APPLICATION_JSON) - public Mono getPlanetsTableData(@Nullable @QueryValue String sortBy, @Nullable @QueryValue String sortOrder) throws IOException { + public Mono getPlanetsTableData(@Nullable @QueryValue String sortBy, @Nullable @QueryValue String sortOrder) { return starWarsService.fetchTableDataFromStorage(DataType.PLANETS, sortBy, sortOrder); } - - // Possible future improvement: - // Add a /ready or /health endpoint so that the platform solution (e.g. Kubernetes) knows when the application can - // be considered to be "ready". In the /ready endpoint we would check if the people_data and planets_data JSON files - // are already available. If yes, we're good to go and the application is ready to start receiving requests. - // This is to avoid the state of the backend app being up but it still hasn't finished download the data from the - // backend. Kubernetes makes this easy to do. } diff --git a/backend/src/main/java/com/cesaredecal/JsonFileService.java b/backend/src/main/java/com/cesaredecal/starwarsapi/JsonFileService.java similarity index 94% rename from backend/src/main/java/com/cesaredecal/JsonFileService.java rename to backend/src/main/java/com/cesaredecal/starwarsapi/JsonFileService.java index b737d87..55704da 100644 --- a/backend/src/main/java/com/cesaredecal/JsonFileService.java +++ b/backend/src/main/java/com/cesaredecal/starwarsapi/JsonFileService.java @@ -1,6 +1,5 @@ -package com.cesaredecal; +package com.cesaredecal.starwarsapi; -import com.cesaredecal.models.PeopleResponse; import io.micronaut.serde.ObjectMapper; import javax.inject.Inject; @@ -11,7 +10,6 @@ import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Paths; -import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; diff --git a/backend/src/main/java/com/cesaredecal/StarWarsClient.java b/backend/src/main/java/com/cesaredecal/starwarsapi/StarWarsClient.java similarity index 73% rename from backend/src/main/java/com/cesaredecal/StarWarsClient.java rename to backend/src/main/java/com/cesaredecal/starwarsapi/StarWarsClient.java index 181d107..9c70b8e 100644 --- a/backend/src/main/java/com/cesaredecal/StarWarsClient.java +++ b/backend/src/main/java/com/cesaredecal/starwarsapi/StarWarsClient.java @@ -1,7 +1,7 @@ -package com.cesaredecal; +package com.cesaredecal.starwarsapi; -import com.cesaredecal.models.PeopleResponse; -import com.cesaredecal.models.PlanetsResponse; +import com.cesaredecal.starwarsapi.models.PeopleResponse; +import com.cesaredecal.starwarsapi.models.PlanetsResponse; import io.micronaut.http.annotation.Get; import io.micronaut.http.annotation.QueryValue; import io.micronaut.http.client.annotation.Client; diff --git a/backend/src/main/java/com/cesaredecal/StarWarsService.java b/backend/src/main/java/com/cesaredecal/starwarsapi/StarWarsService.java similarity index 75% rename from backend/src/main/java/com/cesaredecal/StarWarsService.java rename to backend/src/main/java/com/cesaredecal/starwarsapi/StarWarsService.java index 5c59f78..56cd22a 100644 --- a/backend/src/main/java/com/cesaredecal/StarWarsService.java +++ b/backend/src/main/java/com/cesaredecal/starwarsapi/StarWarsService.java @@ -1,8 +1,8 @@ -package com.cesaredecal; +package com.cesaredecal.starwarsapi; -import com.cesaredecal.models.DataType; -import com.cesaredecal.models.PeopleResponse; -import com.cesaredecal.models.PlanetsResponse; +import com.cesaredecal.starwarsapi.models.DataType; +import com.cesaredecal.starwarsapi.models.PeopleResponse; +import com.cesaredecal.starwarsapi.models.PlanetsResponse; import io.micronaut.context.event.StartupEvent; import io.micronaut.core.type.Argument; import io.micronaut.runtime.event.annotation.EventListener; @@ -96,31 +96,39 @@ public void fetchTableDataAndSaveJson(DataType dataType) { // Read operations - public Mono fetchColumns(DataType dataType) throws IOException { - String fileName = dataType.getColumnsFileName(); - return Mono.just(jsonFileService.readJsonFile(fileName)); + public Mono fetchColumns(DataType dataType) { + try { + String fileName = dataType.getColumnsFileName(); + return Mono.just(jsonFileService.readJsonFile(fileName)); + } catch (IOException e) { + return Mono.error(new RuntimeException("Error fetching columns data for " + dataType, e)); + } } - public Mono fetchTableDataFromStorage(DataType dataType, String sortBy, String sortOrder) throws IOException { - String fileName = dataType.getDataFileName(); - String jsonContent = jsonFileService.readJsonFile(fileName); + public Mono fetchTableDataFromStorage(DataType dataType, String sortBy, String sortOrder) { + try { + String fileName = dataType.getDataFileName(); + String jsonContent = jsonFileService.readJsonFile(fileName); - // Exit early if no sorting is needed - if ((sortBy == null || sortBy.isEmpty()) || (sortOrder == null || sortOrder.isEmpty())) { - return Mono.just(jsonContent); - } + // Exit early if no sorting is needed + if ((sortBy == null || sortBy.isEmpty()) || (sortOrder == null || sortOrder.isEmpty())) { + return Mono.just(jsonContent); + } - Class type = (Class) dataType.getType(); - List data = objectMapper.readValue(jsonContent, Argument.listOf(type)); - Comparator comparator = getComparator(dataType, sortBy); + Class type = (Class) dataType.getType(); + List data = objectMapper.readValue(jsonContent, Argument.listOf(type)); + Comparator comparator = getComparator(dataType, sortBy); - if ("desc".equalsIgnoreCase(sortOrder)) { - comparator = comparator.reversed(); - } + if ("desc".equalsIgnoreCase(sortOrder)) { + comparator = comparator.reversed(); + } - Collections.sort(data, comparator); + Collections.sort(data, comparator); - return Mono.just(objectMapper.writeValueAsString(data)); + return Mono.just(objectMapper.writeValueAsString(data)); + } catch (IOException e) { + return Mono.error(new RuntimeException("Error fetching table data for " + dataType, e)); + } } private Comparator getComparator(DataType dataType, String sortBy) { @@ -151,5 +159,4 @@ private Comparator getPlanetsComparator(String sortBy) { return Comparator.comparing(PlanetsResponse.Planet::getName); } } - } diff --git a/backend/src/main/java/com/cesaredecal/models/DataType.java b/backend/src/main/java/com/cesaredecal/starwarsapi/models/DataType.java similarity index 94% rename from backend/src/main/java/com/cesaredecal/models/DataType.java rename to backend/src/main/java/com/cesaredecal/starwarsapi/models/DataType.java index c5ec422..bac7dde 100644 --- a/backend/src/main/java/com/cesaredecal/models/DataType.java +++ b/backend/src/main/java/com/cesaredecal/starwarsapi/models/DataType.java @@ -1,4 +1,4 @@ -package com.cesaredecal.models; +package com.cesaredecal.starwarsapi.models; public enum DataType { PEOPLE("people_data.json", "people_metadata.json", PeopleResponse.Person.class), diff --git a/backend/src/main/java/com/cesaredecal/models/PeopleResponse.java b/backend/src/main/java/com/cesaredecal/starwarsapi/models/PeopleResponse.java similarity index 99% rename from backend/src/main/java/com/cesaredecal/models/PeopleResponse.java rename to backend/src/main/java/com/cesaredecal/starwarsapi/models/PeopleResponse.java index ec5ecd5..a5b68b5 100644 --- a/backend/src/main/java/com/cesaredecal/models/PeopleResponse.java +++ b/backend/src/main/java/com/cesaredecal/starwarsapi/models/PeopleResponse.java @@ -1,4 +1,4 @@ -package com.cesaredecal.models; +package com.cesaredecal.starwarsapi.models; import io.micronaut.core.annotation.Introspected; import com.fasterxml.jackson.annotation.JsonProperty; diff --git a/backend/src/main/java/com/cesaredecal/models/PlanetsResponse.java b/backend/src/main/java/com/cesaredecal/starwarsapi/models/PlanetsResponse.java similarity index 99% rename from backend/src/main/java/com/cesaredecal/models/PlanetsResponse.java rename to backend/src/main/java/com/cesaredecal/starwarsapi/models/PlanetsResponse.java index 511e535..a2fe7b5 100644 --- a/backend/src/main/java/com/cesaredecal/models/PlanetsResponse.java +++ b/backend/src/main/java/com/cesaredecal/starwarsapi/models/PlanetsResponse.java @@ -1,4 +1,4 @@ -package com.cesaredecal.models; +package com.cesaredecal.starwarsapi.models; import com.fasterxml.jackson.annotation.JsonProperty; import io.micronaut.serde.annotation.Serdeable;