diff --git a/src/main/java/myapi/api/Controller/ProjectController.java b/src/main/java/myapi/api/Controller/ProjectController.java new file mode 100644 index 0000000..d5a7a22 --- /dev/null +++ b/src/main/java/myapi/api/Controller/ProjectController.java @@ -0,0 +1,63 @@ +package myapi.api.Controller; + +import java.util.List; +import myapi.api.Model.Project; +import myapi.api.Service.Interfaces.ProjectService; +import org.springframework.beans.factory.annotation.Autowired; +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.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +/** + * Classe servant de point d'entrée pour les objets {@link Project} + */ +@RestController +@RequestMapping("/project") +public class ProjectController { + + @Autowired + private ProjectService projectService; + + /** + * Récupère tous les projets de la bdd + * @return Une liste de Project + */ + @GetMapping + public List getAllProjects() { + return projectService.getAllProjects(); + } + + /** + * Ajoute un projet à la bdd + * @param project Le projet à ajouter + * @return Le projet ajouté + */ + @PostMapping("/add") + public Project addProject(@RequestBody Project project) { + return projectService.addProject(project); + } + + /** + * Modifie un projet de la bdd + * @param project Le projet que l'on veut modifier. Il faut que son id soit déjà présent + * @return Le projet créé + */ + @PutMapping("/update") + public Project updateProject(@RequestBody Project project) { + return projectService.updateProject(project); + } + + /** + * Supprime un projet de la bdd à partir de son identifiant + * @param idProject L'identifiant du projet à supprimer + */ + @DeleteMapping("/delete") + public void deleteProject(@RequestParam("id") int idProject) { + projectService.deleteProject(idProject); + } +} diff --git a/src/main/java/myapi/api/Model/Project.java b/src/main/java/myapi/api/Model/Project.java new file mode 100644 index 0000000..68266af --- /dev/null +++ b/src/main/java/myapi/api/Model/Project.java @@ -0,0 +1,40 @@ +package myapi.api.Model; + +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import org.hibernate.annotations.Audited.Table; + +/** + * Classe mappée à la table project de la bdd + * Project + */ +@Entity +@Table(name = "project") +public class Project { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private int id_project; + + private String name_project; + + /* --- GETTERS ET SETTERS --- */ + + public int getId_project() { + return id_project; + } + + public void setId_project(int id_project) { + this.id_project = id_project; + } + + public String getName_project() { + return name_project; + } + + public void setName_project(String name_project) { + this.name_project = name_project; + } +} diff --git a/src/main/java/myapi/api/Repository/ProjectRepository.java b/src/main/java/myapi/api/Repository/ProjectRepository.java new file mode 100644 index 0000000..b69524f --- /dev/null +++ b/src/main/java/myapi/api/Repository/ProjectRepository.java @@ -0,0 +1,12 @@ +package myapi.api.Repository; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import myapi.api.Model.Project; + +/** + * Repository Jpa permettant la persistance + */ +@Repository +public interface ProjectRepository extends JpaRepository {} diff --git a/src/main/java/myapi/api/Service/Implementations/ProjectServiceImpl.java b/src/main/java/myapi/api/Service/Implementations/ProjectServiceImpl.java new file mode 100644 index 0000000..664ab77 --- /dev/null +++ b/src/main/java/myapi/api/Service/Implementations/ProjectServiceImpl.java @@ -0,0 +1,53 @@ +package myapi.api.Service.Implementations; + +import java.util.List; +import myapi.api.Model.Project; +import myapi.api.Repository.ProjectRepository; +import myapi.api.Service.Interfaces.ProjectService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class ProjectServiceImpl implements ProjectService { + + @Autowired + private ProjectRepository projectRepository; + + /** (non-Javadoc) + * @see myapi.api.Service.Interfaces.ProjectService#getAllProjects() + */ + @Override + public List getAllProjects() { + return projectRepository.findAll(); + } + + /** (non-Javadoc) + * + * @see myapi.api.Service.Interfaces.ProjectService#addProject(myapi.api.Model.Project) + */ + @Override + public Project addProject(Project project) { + return projectRepository.save(project); + } + + /**(non-Javadoc) + * + * @see myapi.api.Service.Interfaces.ProjectService#updateProject(myapi.api.Model.Project) + */ + @Override + public Project updateProject(Project project) { + Project dbProject = projectRepository.findById(project.getId_project()).get(); + dbProject.setId_project(project.getId_project()); + dbProject.setName_project(project.getName_project()); + return projectRepository.save(dbProject); + } + + /**(non-Javadoc) + * + * @see myapi.api.Service.Interfaces.ProjectService#deleteProject(int) + */ + @Override + public void deleteProject(int idProject) { + projectRepository.deleteById(idProject); + } +} diff --git a/src/main/java/myapi/api/Service/Interfaces/ProjectService.java b/src/main/java/myapi/api/Service/Interfaces/ProjectService.java new file mode 100644 index 0000000..989e3f6 --- /dev/null +++ b/src/main/java/myapi/api/Service/Interfaces/ProjectService.java @@ -0,0 +1,36 @@ +package myapi.api.Service.Interfaces; + +import java.util.List; +import myapi.api.Model.Project; + +/** + * Interface pour les services de project + * ProjectService + */ +public interface ProjectService { + /** + * Récupère tous les projets de la database + * @return Une liste de projets + */ + List getAllProjects(); + + /** + * Ajoute un nouveau projet + * @param project Le nouveau projet + * @return Le projet nouvellement créé + */ + Project addProject(Project project); + + /** + * Modifie un projet déjà existant + * @param project Le projet à modifier. Il faut que son id existe déjà dans la database + * @return Le projet modifié + */ + Project updateProject(Project project); + + /** + * Supprime un projet à partir de son identifiant + * @param idProject L'identifiant du projet + */ + void deleteProject(int idProject); +} diff --git a/src/main/java/myapi/api/Service/Interfaces/TaskService.java b/src/main/java/myapi/api/Service/Interfaces/TaskService.java index 89edd79..1a14989 100644 --- a/src/main/java/myapi/api/Service/Interfaces/TaskService.java +++ b/src/main/java/myapi/api/Service/Interfaces/TaskService.java @@ -1,8 +1,6 @@ package myapi.api.Service.Interfaces; import java.util.List; - - import myapi.api.Model.Task; /** @@ -31,7 +29,7 @@ public interface TaskService { /** * Supprime une tâche existante à partir de son identifiant - * @param taskId L'id de la tâche à supprimer + * @param idTask L'id de la tâche à supprimer */ - void deleteTask(int taskId); + void deleteTask(int idTask); }