feat: added a new database service
All checks were successful
Format / formatting (push) Successful in 7s
CI / build (push) Successful in 13s

This commit is contained in:
Pierre Tellier
2025-02-26 10:32:44 +01:00
parent 27e70ee109
commit e66fa33577

View File

@ -0,0 +1,66 @@
package enseirb.myinpulse.service.database;
import enseirb.myinpulse.model.Project;
import enseirb.myinpulse.repository.ProjectRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service;
import org.springframework.web.server.ResponseStatusException;
import java.time.LocalDate;
import java.util.Optional;
@Service
public class ProjectService {
private final ProjectRepository projectRepository;
@Autowired
ProjectService(ProjectRepository projectRepository) {
this.projectRepository = projectRepository;
}
public Iterable<Project> getAllProjects() {
return this.projectRepository.findAll();
}
// TODO: change error
public Project getProjectById(Long id) {
Optional<Project> project = this.projectRepository.findById(id);
if (project.isEmpty()) {
throw new ResponseStatusException(HttpStatus.NOT_FOUND, "Ce projet n'existe pas");
}
return project.get();
}
// TODO: validation
public Project addNewProject(Project project) {
return this.projectRepository.save(project);
}
public Project updateProject(
Long id,
String projectName,
byte[] logo,
LocalDate creationDate,
String projectStatus) {
Optional<Project> project = this.projectRepository.findById(id);
if (project.isEmpty()) {
throw new ResponseStatusException(HttpStatus.NOT_FOUND, "Ce projet n'existe pas");
}
if (projectName != null) {
project.get().setProjectName(projectName);
}
if (logo != null) {
project.get().setLogo(logo);
}
if (creationDate != null) {
project.get().setCreationDate(creationDate);
}
if (projectStatus != null) {
project.get().setProjectStatus(projectStatus);
}
return this.projectRepository.save(project.get());
}
}