From 1d4efc1f2b2d961afd07d2eff759267fb2031241 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20S=C3=A4ume?= Date: Wed, 25 Sep 2024 11:18:36 +0200 Subject: [PATCH] PMT-32: Define Get All Projects DTO, Endpoint and implement them --- src/main/java/de/hmmh/pmt/ApiController.java | 25 +++++++++++--- src/main/resources/api.yml | 35 +++++++++----------- src/main/resources/gen-config.json | 2 +- 3 files changed, 37 insertions(+), 25 deletions(-) diff --git a/src/main/java/de/hmmh/pmt/ApiController.java b/src/main/java/de/hmmh/pmt/ApiController.java index 550e965..42ecd51 100644 --- a/src/main/java/de/hmmh/pmt/ApiController.java +++ b/src/main/java/de/hmmh/pmt/ApiController.java @@ -1,18 +1,26 @@ package de.hmmh.pmt; import com.fasterxml.jackson.databind.ObjectMapper; +import de.hmmh.pmt.db.Project; +import de.hmmh.pmt.db.ProjectRepository; import de.hmmh.pmt.oas.DefaultApi; -import de.hmmh.pmt.oas.models.HelloOut; +import de.hmmh.pmt.oas.dtos.GetAllProjectsDTO; +import de.hmmh.pmt.oas.dtos.ProjectInfo; import jakarta.servlet.http.HttpServletRequest; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; +import java.util.ArrayList; +import java.util.List; import java.util.Optional; @Controller @RequestMapping("${openapi.projectManagement.base-path:/api/v1}") public class ApiController implements DefaultApi { + @Autowired + private ProjectRepository projectRepository; @Override public Optional getObjectMapper() { @@ -25,9 +33,16 @@ public class ApiController implements DefaultApi { } @Override - public ResponseEntity getHello() { - HelloOut hello = new HelloOut(); - hello.setMsg("Hello World"); - return ResponseEntity.ok(hello); + public ResponseEntity getAllProjects() { + GetAllProjectsDTO response = new GetAllProjectsDTO(); + + for (Project project : this.projectRepository.findAll()){ + ProjectInfo projectInfo = new ProjectInfo(); + projectInfo.setId(project.getId()); + projectInfo.setName(project.getName()); + response.add(projectInfo); + } + + return ResponseEntity.ok(response); } } diff --git a/src/main/resources/api.yml b/src/main/resources/api.yml index 7e46e48..b38b396 100644 --- a/src/main/resources/api.yml +++ b/src/main/resources/api.yml @@ -5,22 +5,21 @@ info: version: 1.0.0 servers: - url: /api/v1 - components: - schemas: - HelloOut: - description: "A Test Schema" + schemas: + ProjectInfo: type: object - properties: - msg: + properties: + id: + type: integer + format: int64 + name: type: string + GetAllProjectsDTO: + type: array + items: + $ref: "#/components/schemas/ProjectInfo" responses: - OK: - description: "OK" - content: - text/plain: - schema: - type: string InternalError: description: "Internal Server Error" content: @@ -28,16 +27,14 @@ components: schema: type: string paths: - /hello: + /project: get: - operationId: "GetHello" - description: "A Simple Hello World Endpoint" + operationId: "getAllProjects" + description: "Get a List of all Projects" responses: 200: - description: "A Hello Response" + description: "" content: application/json: schema: - $ref: "#/components/schemas/HelloOut" - 500: - $ref: "#/components/responses/InternalError" \ No newline at end of file + $ref: "#/components/schemas/GetAllProjectsDTO" \ No newline at end of file diff --git a/src/main/resources/gen-config.json b/src/main/resources/gen-config.json index a87080c..0f30ca8 100644 --- a/src/main/resources/gen-config.json +++ b/src/main/resources/gen-config.json @@ -1,5 +1,5 @@ { - "modelPackage": "de.hmmh.pmt.oas.models", + "modelPackage": "de.hmmh.pmt.oas.dtos", "apiPackage": "de.hmmh.pmt.oas", "invokerPackage": "de.hmmh.pmt.oas", "java8": false,