diff --git a/pom.xml b/pom.xml index 4f4bfcc..de94826 100644 --- a/pom.xml +++ b/pom.xml @@ -30,16 +30,44 @@ 17 + org.springframework.boot spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-data-jdbc + + + + + org.springframework.boot + spring-boot-starter-data-jpa + + + + + com.mysql + mysql-connector-j + runtime + + + org.springframework.boot spring-boot-starter-test test + + + + org.projectlombok + lombok + annotationProcessor + diff --git a/src/main/java/fr/teamflash/archy/controller/userController.java b/src/main/java/fr/teamflash/archy/controller/userController.java index 3028fc0..457c0b4 100644 --- a/src/main/java/fr/teamflash/archy/controller/userController.java +++ b/src/main/java/fr/teamflash/archy/controller/userController.java @@ -2,19 +2,28 @@ package fr.teamflash.archy.controller; import fr.teamflash.archy.dto.userDTO; import fr.teamflash.archy.dto.userDisplayDTO; +import fr.teamflash.archy.entity.userEntity; import fr.teamflash.archy.fonction.calcule; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatusCode; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import fr.teamflash.archy.repository.userRepository; + import java.time.LocalDate; import java.time.Period; import java.util.List; +import java.util.Optional; @RestController @RequestMapping("user") public class userController { + @Autowired + private userRepository userRepository; + @PostMapping("add") public ResponseEntity afficher (@RequestBody userDTO dto){ // calcule l'age @@ -41,4 +50,27 @@ public class userController { return new ResponseEntity(respond, HttpStatusCode.valueOf(200)); } + @GetMapping("get/{id}") + public ResponseEntity get(@PathVariable String id) { + Integer ID; + + // Vérifie si le paramètre est un entier + try { + ID = Integer.parseInt(id); + } catch (NumberFormatException e) { + return new ResponseEntity("ID invalide : ce n'est pas un entier.", HttpStatusCode.valueOf(400)); + } + + // Recherche dans la base + Optional result = userRepository.findById(ID); + + // Vérifie si l'utilisateur existe + if (result.isEmpty()) { + return new ResponseEntity("Aucun utilisateur trouvé avec l'ID " + ID, HttpStatusCode.valueOf(404)); + } + + // Retourne l'utilisateur trouvé + return new ResponseEntity(result.get(), HttpStatusCode.valueOf(200)); + } + } diff --git a/src/main/java/fr/teamflash/archy/entity/userEntity.java b/src/main/java/fr/teamflash/archy/entity/userEntity.java new file mode 100644 index 0000000..c7e5ea1 --- /dev/null +++ b/src/main/java/fr/teamflash/archy/entity/userEntity.java @@ -0,0 +1,35 @@ +package fr.teamflash.archy.entity; + +import fr.teamflash.archy.fonction.letter; +import jakarta.persistence.*; +import lombok.Data; + +import java.time.LocalDate; + +@Entity +@Table(name = "users") +@Data +public class userEntity { + + @Column(name = "id") + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private int id; + + @Column(name = "nom") + private String nom; + + @Column(name = "prenom") + private String prenom; + + @Column(name = "date_naissance") + private LocalDate dateNaissance; + + public String getNom() { + return nom.toUpperCase(); + } + + public String getPrenom() { + return letter.firstLetterCapitalize(prenom); + } +} diff --git a/src/main/java/fr/teamflash/archy/fonction/letter.java b/src/main/java/fr/teamflash/archy/fonction/letter.java new file mode 100644 index 0000000..3c485fb --- /dev/null +++ b/src/main/java/fr/teamflash/archy/fonction/letter.java @@ -0,0 +1,13 @@ +package fr.teamflash.archy.fonction; + +public class letter { + + public static String firstLetterCapitalize(String inputString) { + if (inputString == null || inputString.isEmpty()) { + return inputString; + } + + inputString = inputString.toLowerCase(); + return inputString.substring(0, 1).toUpperCase() + inputString.substring(1); + } +} diff --git a/src/main/java/fr/teamflash/archy/repository/userRepository.java b/src/main/java/fr/teamflash/archy/repository/userRepository.java new file mode 100644 index 0000000..8de3ef0 --- /dev/null +++ b/src/main/java/fr/teamflash/archy/repository/userRepository.java @@ -0,0 +1,10 @@ +package fr.teamflash.archy.repository; + +import fr.teamflash.archy.entity.userEntity; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface userRepository extends JpaRepository { + +} \ No newline at end of file diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 83751ec..e4aeb1d 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1 +1,5 @@ spring.application.name=Archy +spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver +spring.datasource.url=jdbc:mysql://lehub.tf:3306/Lan_ipi_archy +spring.datasource.username=Lan_ipi_archy +spring.datasource.password=Azerty1234. \ No newline at end of file diff --git a/src/test/java/fr/teamflash/archy/ArchyApplicationTests.java b/src/test/java/fr/teamflash/archy/ArchyApplicationTests.java index c423717..9a1fbd7 100644 --- a/src/test/java/fr/teamflash/archy/ArchyApplicationTests.java +++ b/src/test/java/fr/teamflash/archy/ArchyApplicationTests.java @@ -4,10 +4,4 @@ import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; @SpringBootTest -class ArchyApplicationTests { - - @Test - void contextLoads() { - } - -} +class ArchyApplicationTests {}