From a4120b3c48cec419f62c964e5849d58484784e17 Mon Sep 17 00:00:00 2001 From: Anton Romanov Date: Fri, 14 Feb 2025 19:29:16 +0400 Subject: [PATCH] #11 -- Add project rest api --- .../{ => controller}/ProjectController.java | 4 +- .../controller/ProjectRestController.java | 38 +++++++++++++++++++ .../ru/ulstu/fc/project/model/Project.java | 6 +++ .../fc/project/service/ProjectService.java | 16 +++++--- 4 files changed, 56 insertions(+), 8 deletions(-) rename src/main/java/ru/ulstu/fc/project/{ => controller}/ProjectController.java (91%) create mode 100644 src/main/java/ru/ulstu/fc/project/controller/ProjectRestController.java diff --git a/src/main/java/ru/ulstu/fc/project/ProjectController.java b/src/main/java/ru/ulstu/fc/project/controller/ProjectController.java similarity index 91% rename from src/main/java/ru/ulstu/fc/project/ProjectController.java rename to src/main/java/ru/ulstu/fc/project/controller/ProjectController.java index 35456ef..cda2300 100644 --- a/src/main/java/ru/ulstu/fc/project/ProjectController.java +++ b/src/main/java/ru/ulstu/fc/project/controller/ProjectController.java @@ -1,4 +1,4 @@ -package ru.ulstu.fc.project; +package ru.ulstu.fc.project.controller; import io.swagger.v3.oas.annotations.Hidden; import org.springframework.stereotype.Controller; @@ -28,7 +28,7 @@ public class ProjectController { @PostMapping("save") public String save(ProjectForm projectForm, Model model) { - projectService.save(projectForm); + model.addAttribute("project", projectService.save(projectForm)); return "redirect:/list"; } diff --git a/src/main/java/ru/ulstu/fc/project/controller/ProjectRestController.java b/src/main/java/ru/ulstu/fc/project/controller/ProjectRestController.java new file mode 100644 index 0000000..b2875a8 --- /dev/null +++ b/src/main/java/ru/ulstu/fc/project/controller/ProjectRestController.java @@ -0,0 +1,38 @@ +package ru.ulstu.fc.project.controller; + +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import ru.ulstu.fc.project.model.Project; +import ru.ulstu.fc.project.model.ProjectForm; +import ru.ulstu.fc.project.service.ProjectService; + +import java.util.List; + +@RestController +@RequestMapping("projectRest") +public class ProjectRestController { + private final ProjectService projectService; + + public ProjectRestController(ProjectService projectService) { + this.projectService = projectService; + } + + @GetMapping("list") + public List getProjects() { + return projectService.getCurrentUserProjects(); + } + + @PostMapping("save") + public Project save(Project project) { + return projectService.save(project); + } + + @DeleteMapping("delete") + public String delete(ProjectForm projectForm) { + projectService.delete(projectForm); + return "redirect:/list"; + } +} diff --git a/src/main/java/ru/ulstu/fc/project/model/Project.java b/src/main/java/ru/ulstu/fc/project/model/Project.java index 75e310d..7edf932 100644 --- a/src/main/java/ru/ulstu/fc/project/model/Project.java +++ b/src/main/java/ru/ulstu/fc/project/model/Project.java @@ -10,7 +10,13 @@ public class Project extends BaseEntity { private String name; private Date createDate = new Date(); + public Project() { + } + public Project(ProjectForm projectForm) { + if (projectForm.getId() != null) { + setId(projectForm.getId()); + } this.name = projectForm.getName(); } diff --git a/src/main/java/ru/ulstu/fc/project/service/ProjectService.java b/src/main/java/ru/ulstu/fc/project/service/ProjectService.java index c529d0e..88e4258 100644 --- a/src/main/java/ru/ulstu/fc/project/service/ProjectService.java +++ b/src/main/java/ru/ulstu/fc/project/service/ProjectService.java @@ -20,14 +20,18 @@ public class ProjectService { } public Project save(ProjectForm projectForm) { - if (projectForm.getId() == null) { - return projectRepository.save(new Project(projectForm)); + return projectRepository.save(new Project(projectForm)); + } + + public Project save(Project projectToSave) { + if (projectToSave.getId() == null) { + return projectRepository.save(projectToSave); } - Project project = projectRepository - .findById(projectForm.getId()) + Project dbProject = projectRepository + .findById(projectToSave.getId()) .orElseThrow(() -> new RuntimeException("Project not found by id")); - project.setName(projectForm.getName()); - return projectRepository.save(project); + dbProject.setName(projectToSave.getName()); + return projectRepository.save(dbProject); } public void delete(ProjectForm projectForm) {